嵌入式服务器和Spring Boot的CORS(跨源资源共享)可以正常工作,但在使用Tomcat 9进行部署时不起作用的原因可能是Tomcat 9的默认配置不支持CORS。
CORS是一种浏览器机制,用于控制跨域请求资源的访问权限。在嵌入式服务器和Spring Boot中,CORS可以通过配置相关的跨域策略来实现。但是在使用Tomcat 9进行部署时,需要手动配置Tomcat的CORS过滤器才能使其生效。
要解决这个问题,可以按照以下步骤进行操作:
conf
文件夹,进入该文件夹。conf
文件夹中创建一个名为Catalina
的文件夹(如果已存在则跳过此步骤)。Catalina
文件夹,创建一个名为localhost
的文件夹(如果已存在则跳过此步骤)。localhost
文件夹,创建一个名为WEB-INF
的文件夹(如果已存在则跳过此步骤)。WEB-INF
文件夹,创建一个名为web.xml
的文件。web.xml
文件,添加以下内容:<?xml version="1.0" encoding="UTF-8"?>
<web-app>
<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</param-value>
</init-param>
</filter>
<filter-mapping>
<filter-name>CorsFilter</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
</web-app>
上述配置中,cors.allowed.origins
表示允许的跨域请求源,cors.allowed.methods
表示允许的请求方法,cors.allowed.headers
表示允许的请求头。
web.xml
文件。通过以上步骤,我们在Tomcat 9中添加了一个CORS过滤器,并配置了允许的跨域请求源、请求方法和请求头。这样就可以使Tomcat 9支持CORS,从而解决了CORS在使用Tomcat 9进行部署时不起作用的问题。
请注意,以上解决方案是基于Tomcat 9的默认配置进行的,如果你对Tomcat的配置进行了修改,可能需要根据实际情况进行相应的调整。
关于嵌入式服务器、Spring Boot、CORS以及Tomcat的更多详细信息,你可以参考腾讯云的相关产品和文档:
希望以上信息能够帮助到你,如果还有其他问题,请随时提问。
领取专属 10元无门槛券
手把手带您无忧上云