2016-03-01 72 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