2016-03-01 73 views
0

我CORS在Tomcat 7.0.59過濾看起來是這樣的:角CORS「訪問控制允許來源」的問題

<filter> 
    <filter-name>CorsFilter</filter-name> 
    <filter-class>org.apache.catalina.filters.CorsFilter</filter-class> 
    <init-param> 
     <param-name>cors.allowed.headers</param-name> 
     <param-value>accept, content-type, origin, if-match, if-non-match</param-value> 
    </init-param> 
    <init-param> 
     <param-name>cors.allowed.methods</param-name> 
     <param-value>GET, HEAD, OPTIONS, POST, DELETE, PUT</param-value> 
    </init-param> 
    <init-param> 
     <param-name>cors.exposed.headers</param-name> 
     <param-value>ETag, Link</param-value> 
    </init-param> 
    <init-param> 
     <param-name>cors.allowed.origins</param-name> 
     <param-value>http://153.57.146.93,http://localhost:7777,http://localhost:9090</param-value> 
</filter> 
<filter-mapping> 
    <filter-name>CorsFilter</filter-name> 
    <url-pattern>/*</url-pattern>  
</filter-mapping> 

我試圖從本地主機訪問服務器:在Chrome 9090和我得到: 否請求的資源上存在'Access-Control-Allow-Origin'標頭。我的CORS過濾器是否正確設置?

+0

可能幫助üHTTP: //salesforce.stackexchange.com/questions/87736/angularjs-to-get-salesforce-data-using-rest-api –

+0

它在我使用禁用的安全性運行chrome時起作用,但這不是接受ble解決方案 – playerone

回答

0

這適用於我。創建一個過濾器類:

public class CORSFilter implements Filter{ 

     @Override 
     public void init(FilterConfig filterConfig) throws ServletException { 

     } 

     @Override 
     public void doFilter(ServletRequest req, ServletResponse res, 
       FilterChain chain) throws IOException, ServletException { 

      HttpServletResponse response = (HttpServletResponse) res; 
      response.setHeader("Access-Control-Allow-Origin", "*"); 
      response.setHeader("Access-Control-Allow-Methods", "POST, GET, OPTIONS, DELETE, PUT"); 
      response.setHeader("Access-Control-Max-Age", "3600"); 
      response.setHeader("Access-Control-Allow-Headers", "x-requested-with,content-type"); 
      chain.doFilter(req, res); 

     } 

     @Override 
     public void destroy() { 

     } 

    } 

那麼你的類添加到過濾器列表

<filter> 
    <filter-name>LogFilter</filter-name> 
    <filter-class> 
     net.viralpatel.servlet.filters.CORSFilter 
    </filter-class> 
    <init-param> 
     <param-name>test-param</param-name> 
     <param-value>This parameter is for testing.</param-value> 
    </init-param> 
</filter> 

多個文檔的主題http://viralpatel.net/blogs/tutorial-java-servlet-filter-example-using-eclipse-apache-tomcat/

希望它可以幫助

+0

不適用於我...我有angular/javascript應用程序,並且已經設置了標題。 – playerone

+0

嗯我使用相同的過濾器用於相同的目的。你有沒有嘗試禁用其他的東西(與CORS有關),只有離開這個過濾器? – jstuartmilne