我在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>
我试图从localhost:9090在Chrome访问服务器,我得到:请求的资源上不存在“Access-Control-Allow-Origin”标头。我的CORS筛选器设置是否正确?
2条答案
按热度按时间5f0d552i1#
创建一个过滤器类:
然后将类添加到过滤器列表中
更多关于主题的文档http://viralpatel.net/blogs/tutorial-java-servlet-filter-example-using-eclipse-apache-tomcat/
希望能有所帮助
6ie5vjzr2#
Tomcat CORS过滤器允许标题参数
cors.allowed.headers
仅允许以下值X-Client-Context-Id, Origin, Authorization, Accept, Access-Control-Request-Method, Cache-Control, Access-Control-Request-Headers, Accept-Language, Pragma, Content-Language, Content-Type
。如果您的预检请求包含除上述标题之外的任何内容,您将返回403未授权错误(可能在过滤器链的深处有其他过滤器生成403,我正在尝试跟踪它)。看起来您有两个自定义头文件if-match,if-non-match可能就是导致问题的原因。