如何在 jBoss 中启用 CORS

Posted

技术标签:

【中文标题】如何在 jBoss 中启用 CORS【英文标题】:How to enable CORS in jBoss 【发布时间】:2014-07-29 16:15:30 【问题描述】:

我正在开发一个 html5 应用程序,它必须从遗留 Web 服务 (Jax-Ws) 中获取一些值,因此我使用 jQuery.soap 来查询这些 Web 服务以获取响应。我已经用 SOAP UI 尝试了我的请求的正确性,并且它们可以正常工作。

我无法从我的 HTML5 客户端接收来自服务器的 SOAP 响应,因为在响应中没有将 Allow-Control-Allow-Origin 标头设置为 *。因此,请求的来源被识别为不允许,服务器的响应是错误响应。

错误信息,用 Firebug + Firefox 调试我的 HTML5 项目,是:

锁定的跨源请求:源端的标准不允许读取远程资源。您可以通过将资源移动到同一个域或激活 CORS 来解决问题。

【问题讨论】:

你需要使用像这样的servlet过滤器:software.dzhuvinov.com/cors-filter.html 【参考方案1】:

您需要处理旧的网络服务来解决问题。正如上面 mccannf 所说,您需要在 web.xml 中添加 CORS 过滤器。

您可以使用交易公司的解决方案:

web.xml:

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

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

行家:

<dependency>
    <groupId>com.thetransactioncompany</groupId>
    <artifactId>cors-filter</artifactId>
    <version>2.5</version>
</dependency>

如果你使用 apache Tomcat,你可以使用内置的 CorsFilter:

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>

pom.xml:

<dependency>
    <groupId>org.apache.tomcat</groupId>
    <artifactId>tomcat-catalina</artifactId>
    <version>7.0.42</version>
    <scope>provided</scope>
</dependency>

【讨论】:

谢谢,这解决了创建过滤器和测试它的麻烦。完美运行。 得到了这个:java.lang.UnsupportedClassVersionError: com/thetransactioncompany/cors/CORSFilter : Unsupported major.minor version 51.0 表示我使用的 JBoss 程序是用较低版本的 jdk (JRE 6 1.6)并且无法改变这一点。所以,不能用这个。【参考方案2】:

如果您在本地工作,您可以修改standalone.xml 文件。

修改您的 xml 的过滤器部分,如以下答案所示: https://***.com/a/39215400/10623693

【讨论】:

【参考方案3】:

我已经解决了这个问题,在 web.xml 中禁用 WAPDL(Web 应用程序描述语言):

<servlet>
...
        <init-param>
            <param-name>com.sun.jersey.config.feature.DisableWADL</param-name>
            <param-value>true</param-value>
        </init-param>
...
</servlet>

【讨论】:

以上是关于如何在 jBoss 中启用 CORS的主要内容,如果未能解决你的问题,请参考以下文章

如何在 odata 中启用 CORS?

如何在 FastAPI 中启用 CORS?

如何在 Sharepoint Online 中启用 CORS

如何使用 CORS 启用自定义标头?

如何在 asp.net web apis 中启用 cors 选项。?

如何在ajax中启用cors?