跨域资源共享(CORS,Cross-Origin Resource Sharing)是一种机制,它使用额外的 HTTP 头来告诉浏览器,让运行在一个源(域)上的 Web 应用被允许访问来自不同源服务器上的指定资源。当一个资源从与该资源本身所在的服务器不同的域、协议或端口请求一个资源时,资源会发起一个跨域 HTTP 请求。
web.xml
是 Java EE 的部署描述符文件,用于配置 Servlet、Filter、Listener 等组件。通过在 web.xml
中配置 CORS,可以控制哪些域名可以访问 Web 应用。
CORS 配置可以分为两类:
CORS 常用于以下场景:
以下是一个在 web.xml
中配置多个域名的示例:
<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>http://example1.com,http://example2.com,http://example3.com</param-value>
</init-param>
<init-param>
<param-name>cors.allowed.methods</param-name>
<param-value>GET,POST,PUT,DELETE,OPTIONS</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</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>
<init-param>
<param-name>cors.preflight.maxage</param-name>
<param-value>10</param-value>
</init-param>
</filter>
<filter-mapping>
<filter-name>CorsFilter</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
原因:
web.xml
中的配置有误。解决方法:
web.xml
中的配置正确无误。解决方法:
将 cors.allowed.origins
参数的值设置为 *
:
<init-param>
<param-name>cors.allowed.origins</param-name>
<param-value>*</param-value>
</init-param>
通过以上配置和解决方法,可以有效解决 web.xml
中跨域配置多域名的问题。
领取专属 10元无门槛券
手把手带您无忧上云