在不使用 Servlet 过滤器的情况下,有没有办法配置 Tomcat 9.0.12(可能通过 catalina.properties
)以允许所有 CORS 请求、所有 header 和几乎每个请求?
最佳答案
Tomcat 确实通过添加 CorsFilter 来支持 CORS。 如果您需要(请注意 url-pattern)在下面的示例中,配置足够灵活以拦截所有请求:
<filter>
<filter-name>CorsFilter</filter-name>
<filter-class>org.apache.catalina.filters.CorsFilter</filter-class>
</filter>
<filter-mapping>
<filter-name>CorsFilter</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
现在,这显然必须在 Web 应用程序级别完成(更改 Web 应用程序的 web.xml)。
如果你想“全局”应用这个过滤器(对于可能部署在 tomcat 上的所有 WAR),那么有一个选项可以配置 tomcat 本身,这样它就可以捕获所有可能的 HTTP 请求:
将上述配置添加到conf/web.xml
即可。
边注:
如果你扩展这个过滤器或其他东西并且出于某种原因需要一些额外的依赖项,它们当然不能在 WAR 中,但必须在 tomcat 本身的类路径中,所以将所需的库放入 lib
文件夹(同样,只有当你需要这样的东西时)
有用的资源:
关于tomcat - 使用 Tomcat 服务器为每个请求启用 CORS,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53138315/