2015-06-22 131 views
0

我使用球衣2.18来开发rest api。 (使用tomcat容器)球衣跨域请求

我想允许从其他域访问客户端。

所以我想下面的代码,以允许跨域请求。

过滤

public class MyCorsFilter implements Filter { 

    public MyCorsFilter() { } 

    public void init(FilterConfig fConfig) throws ServletException { } 

    public void destroy() { } 

    public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException { 
     ((HttpServletResponse)response).addHeader("Access-Control-Allow-Origin", "*"); 
     chain.doFilter(request, response); 
    } 
} 

的web.xml

<filter> 
    <filter-name>MyCorsFilter</filter-name> 
    <filter-class>MyCorsFilter</filter-class> 
</filter> 
<filter-mapping> 
    <filter-name>MyCorsFilter</filter-name> 
    <url-pattern>/api/*</url-pattern> 
</filter-mapping> 

上面的代码,直到我添加了HTTP基本身份验证工作正常。

当我添加我得到以下错误的基本身份验证:

No 'Access-Control-Allow-Origin' header is present on the requested resource. 

使用的开发工具检查头,我发现以下几点:

enter image description here

请注意,是在执行OPTIONS错误方法。 (我正在使用GET方法)

有关如何添加基本HTTP身份验证允许CORS任何建议将不胜感激。

回答

0

你可以在你的web.xml卡塔利娜CORS滤波器配置如下 -

<filter> 
     <filter-name>CorsFilter</filter-name> 
     <filter-class>org.apache.catalina.filters.CorsFilter</filter-class> 
    </filter> 
    <filter-mapping> 
     <filter-name>CorsFilter</filter-name> 
     <url-pattern>/*</url-pattern> 
    </filter-mapping> 
0

普尼特是正确的。

必须注意,你可能要设置一些参数,即:

  • cors.allowed.origins
  • cors.allowed.methods
  • cors.allowed.headers
  • cors.exposed .headers
0

实际上,浏览器在使用http请求方法“选项”执行请求之前发出预检请求。所以你要发送200 OK了这一请求,允许跨域头像

httpResponse.setHeader("Access-Control-Allow-Origin", "*"); 
    httpResponse.setHeader("Access-Control-Allow-Methods", "POST, GET, OPTIONS, DELETE,PUT"); 
    httpResponse.setHeader("Access-Control-Max-Age", "3600"); 
    httpResponse.setHeader("Access-Control-Allow-Headers", "x-requested-with,Authorization, Content-Type"); 
    if(httpRequest.getMethod().equals("OPTIONS")){ 
     httpResponse.setStatus(HttpServletResponse.SC_ACCEPTED); 
     return; 
    } 

更多信息,您可以在http://enable-cors-org/

找到