严重:异常启动过滤器 CORS

Posted

技术标签:

【中文标题】严重:异常启动过滤器 CORS【英文标题】:SEVERE: Exception starting filter CORS 【发布时间】:2013-04-29 23:13:40 【问题描述】:

我在 tomcat 上部署了 RESTful Web 服务'该 Web 服务在同一域场景的客户端/服务器中运行良好'但我需要使 Web 服务从跨域可用'为此我使用了 CORS 过滤器.

我在 myProjects/lib 和 tomcat/lib' 中都包含了过滤器的 jar,并且还在我的 web 服务项目的 web.xml 文件中包含了以下内容

<filter>
    <filter-name>CORS</filter-name>
    <filter-class>com.thetransactioncompany.cors.CORSFilter</filter-class>
</filter>

<init-param>
    <param-name>cors.supportedHeaders</param-name>
    <param-value>Accept, Origin, X-Requested-With, Content-Type, Last-Modified</param-value>
</init-param>

<filter-mapping>
    <filter-name>CORS</filter-name>
    <url-pattern>/*</url-pattern>
</filter-mapping> 

但是当我尝试启动 Web 服务时,我收到以下关于 CORS 过滤器的错误:

SEVERE: Exception starting filter CORS
java.lang.NoClassDefFoundError: com/thetransactioncompany/util/PropertyParseException
at com.thetransactioncompany.cors.CORSFilter.init(CORSFilter.java:100)

请指导我找出这种情况的问题'

【问题讨论】:

在 CORSFilter 的初始化中看起来有些问题。我建议你删除任何初始化参数并默认尝试,如果它有效。 感谢回复,但它不起作用,所以我现在切换到 jsonp 来解决跨域问题 【参考方案1】:

您还需要将 java-properties-utils-1.7.1.jar 文件添加到类路径中,因为 cors 过滤器依赖于它。

http://search.maven.org/#browse%7C-411787350

【讨论】:

那不应该和tomcat一起打包吗? (例如,在 Debian/Ubuntu 的 .deb 包中) 顺便说一句,刚刚尝试将其添加到 Tomcat 的 lib 目录中,但这并没有解决问题。【参考方案2】:

可能是版本问题。我遇到了同样的问题,结果证明这个过滤器至少需要 Tomcat 版本 7.0.41 才能工作,根据:http://enable-cors.org/server_tomcat.html

作为参考,Debian 7.8 附带不支持原生 CORS 的 Tomcat 7.0.28。

【讨论】:

【参考方案3】:

我遇到了同样的问题。在我的情况下,问题是 maven 依赖项已从项目 propertiesDeployment Assembly 部分中删除。希望它可以帮助某人。

【讨论】:

【参考方案4】:

在我的例子中,在 tomcat lib 文件夹中添加这两个 jar 文件解决了这个问题:

cors-filter-2.5.jar java-property-utils-1.10.jar

【讨论】:

【参考方案5】:

我有同样的问题,但在 ma 的情况下, 首先,我的服务器状态是未绑定的,所以我通过“构建路径”进行了更改 但是还是不行。。 我的朋友查了一下,他发现 Eclipse 的“自动构建”功能。 然后效果很好!

【讨论】:

以上是关于严重:异常启动过滤器 CORS的主要内容,如果未能解决你的问题,请参考以下文章

Gateway 过滤器,过滤器统一异常处理

java中的Servlet/过滤器特定异常处理

java中的Servlet/过滤器特定异常处理

异常启动过滤器struts2无法加载配置:无法加载struts.xml文件

捕获引擎执行异常

在 Java Play 应用中启用 CORS 过滤器