我在web.xml
中启用了一个启用了CORS的tomcat 8服务器。
CORS插件适用于大多数情况,但有时会混合来自本地主机和服务器主机的头请求
XMLHttpRequest cannot load http://mipldevlinux7:6060/juneberry/data/blue-marbles/config.json. The 'Access-Control-Allow-Origin' header has a value 'http://localhost:3000' that is not equal to the supplied origin. Origin 'http://mipldevlinux7:7777' is therefore not allowed access
我的tomcat服务器位于端口mipldevlinux7
上名为6060
的服务器上,我在端口7777
上的同一主机上有一台生产服务器。
我在localhost:3000
进行开发,我的同事在localhost:8080
上运行他的开发服务器。
我们收到了CORS错误,错误会将我们的本地主机之间的标头混合到3000
,有时会混合8080
。有时我们甚至会收到mipledevlinux7:7777
的标头请求,以便我们从localhost请求。
我正在使用的CORS是在CORS tomcat 8中构建的:
<filter>
<filter-name>CorsFilter</filter-name>
<filter-class>org.apache.catalina.filters.CorsFilter</filter-class>
<init-param>
<param-name>cors.allowed.origins</param-name>
<param-value>*</param-value>
</init-param>
<init-param>
<param-name>cors.allowed.methods</param-name>
<param-value>GET,POST,HEAD,OPTIONS,PUT</param-value>
</init-param>
<init-param>
<param-name>cors.allowed.headers</param-name>
<param-value>Content-Type,X-Requested-With,accept,Origin,Access-Control-Request-Method,Access-Control-Request-Headers,Last-Modified</param-value>
</init-param>
<init-param>
<param-name>cors.exposed.headers</param-name>
<param-value>Access-Control-Allow-Origin,Access-Control-Allow-Credentials</param-value>
</init-param>
<init-param>
<param-name>cors.support.credentials</param-name>
<param-value>true</param-value>
</init-param>
</filter>
<filter-mapping>
<filter-name>CorsFilter</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
是tomcat缓存了请求标头还是以某种方式使用了最后一个请求标头导致混淆,并阻止了所有请求?
答案 0 :(得分:0)
如果将cors.support.credentials
设置为true,请使用cors.preflight.maxage
来-1来禁用浏览器缓存:
<init-param>
<param-name>cors.preflight.maxage</param-name>
<param-value>-1</param-value>
</init-param>
您确定要将cors.allowed.origins
设置为*
吗?