Maa*_*mon 7 jquery spring-security cross-domain cors tomcat7
我正在使用Tomcat 7.我已根据官方Tomcat文档中的建议设置了本机CORS过滤.
我已经测试了我所能做的一切,但它无法正常工作.鉴于我正在使用我知道使用Spring Security过滤器的供应商应用程序,我想知道这里是否存在已知错误.
这就是我在说的:
<!-- Spring Security START -->
<filter>
<filter-name>springSecurityFilterChain</filter-name>
<filter-class>org.springframework.web.filter.DelegatingFilterProxy</filter-class>
</filter>
<filter-mapping>
<filter-name>springSecurityFilterChain</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
<filter-mapping>
<filter-name>springSecurityFilterChain</filter-name>
<url-pattern>/</url-pattern>
</filter-mapping>
<!-- Spring Security END -->
Run Code Online (Sandbox Code Playgroud)
我已将以下配置添加到Web.xml:
<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>
Run Code Online (Sandbox Code Playgroud)
我知道这是最小的,但它应该工作.
我以前也试过更长的版本:
<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>
<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>
Run Code Online (Sandbox Code Playgroud)
它也没用.
有没有人有使用Spring Security设置CORS过滤器的经验?
您的供应商应用程序必须能够使用适当的 CORS 标头响应传入的预检选项请求。这不是一个错误,它只是缺少为 Spring 启用 CORS 的配置和/或一些代码行。启用 CORS 对于您的供应商来说并不是什么大问题,但对于您来说可能会成为一个大问题,特别是如果您在 eclipse 中没有应用程序 java 项目的副本。
如果幸运的话,您的供应商应用程序已经在 Spring Framework 4.2 RC2 上运行,您可以自己在 XML 中进行配置,请参阅https://spring.io/blog/2015/06/08/cors-support-in-spring-framework。只需尝试将该<mvc:cors>块添加到您的应用程序 web.xml 并根据您的需要配置值。我还没有亲自测试过,但它应该可以解决问题。
但我担心你可能没有那么幸运......
如果您不想要求供应商更新应用程序/您的 WAR 文件,那么事情就会变得有点棘手。在这种情况下,请查看这篇文章:Can't set Authentication Header with Angular and Spring Security。帖子中的答案描述了需要在应用程序中完成的配置web.xml (创建一个新的 CORS 过滤器并将其绑定到您要创建的类)以及如何附加 java 过滤器类(在示例中该类被命名为SimpleCorsFilter在包中com.abcinsights.controller)必须看起来像才能工作。要将新的 java 类添加到您的应用程序中,您必须解包您的 WAR,创建并添加新的 java 过滤器类(不要忘记新的 java 类中的包声明)并重新打包它。这是最复杂的部分,因为如果您在类中或重新打包过程中犯了错误,您可能会在重新部署后第一次看到错误。
| 归档时间: |
|
| 查看次数: |
2082 次 |
| 最近记录: |