CORS 启用但请求 header 从不同主机混淆
CORS enable but request header got mixed up from different host
我有一个 tomcat 8 服务器,在 web.xml
中启用了 CORS。
CORS 插件适用于大多数情况,但有时它会混淆来自本地主机和服务器主机
的 header 请求
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 服务器在端口 6060
上名为 mipldevlinux7
的服务器上,我在同一主机上的端口 7777
上有一个生产服务器。
我在 localhost:3000
上进行开发,而我的同事在 localhost:8080
上运行他的 dev-server。
我们遇到了 CORS 错误,该错误将我们的本地主机之间的 header 混合到 3000
,有时甚至是 8080
。有时我们甚至会收到 header 请求 mipledevlinux7:7777
为什么我们从本地主机请求。
我使用的 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 缓存请求 header 还是在最后一个请求 header 中使用它导致 mix-up 并阻止所有请求?
如果将 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
设置为 *
吗?
我有一个 tomcat 8 服务器,在 web.xml
中启用了 CORS。
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 服务器在端口 6060
上名为 mipldevlinux7
的服务器上,我在同一主机上的端口 7777
上有一个生产服务器。
我在 localhost:3000
上进行开发,而我的同事在 localhost:8080
上运行他的 dev-server。
我们遇到了 CORS 错误,该错误将我们的本地主机之间的 header 混合到 3000
,有时甚至是 8080
。有时我们甚至会收到 header 请求 mipledevlinux7:7777
为什么我们从本地主机请求。
我使用的 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 缓存请求 header 还是在最后一个请求 header 中使用它导致 mix-up 并阻止所有请求?
如果将 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
设置为 *
吗?