2015-06-22 112 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/

找到