如何在 JBoss AS 上使用 java RESTful Web 服务启用 CORS

Posted

技术标签:

【中文标题】如何在 JBoss AS 上使用 java RESTful Web 服务启用 CORS【英文标题】:How to enable CORS with a java restful web service on JBoss AS 【发布时间】:2015-09-14 00:54:23 【问题描述】:

我有一个非常简单的 Java RESTful Web 服务,其中包括 GET 和 POST 请求的两种方法。我在 OpenShift 平台上使用 Jboss Application server 7。

我需要让 javascript 客户端通过发送或接收 JSON 数据来使用 Ajax 使用服务。

Web 服务运行正常。我可以使用 Ajax 从同一应用程序的脚本中使用它,但我需要从其他域的其他应用程序中使用它。

如何在我的 REST 端点上启用跨域请求共享 (CORS)?

【问题讨论】:

【参考方案1】:

将此标头添加到您的响应中:

Access-Control-Allow-Origin: *

例如,对于 servlet,您可以这样做:

或者,您可以添加 jetty-servlets.jar 库作为依赖项并将此过滤器添加到您的 web.xml。这将允许 CORS 用于您的所有 Web 服务。

<filter>
    <filter-name>cross-origin</filter-name>
    <filter-class>org.eclipse.jetty.servlets.CrossOriginFilter</filter-class>
</filter>
<filter-mapping>
    <filter-name>cross-origin</filter-name>
    <url-pattern>/*</url-pattern>
</filter-mapping>

如果您只需要注释特定的服务,首先我们需要更多关于您使用什么库来实现 RESTful 服务的信息。

【讨论】:

我知道我需要将该标头添加到响应中,我只是不知道如何。我尝试将 jetty-servlet 作为 maven 依赖项添加到 pom.xml,并将过滤器添加到 web.xml 但它不起作用。支持 JBoss AS 吗? 我只是使用 Netbeans 在一个默认不包含 web.xml 文件的 Maven Web 应用程序中创建 Web 服务。我正在使用 javax.ws.rs 包中的注释。 我把服务器换成了wildfly 8,成功了,非常感谢你的帮助

以上是关于如何在 JBoss AS 上使用 java RESTful Web 服务启用 CORS的主要内容,如果未能解决你的问题,请参考以下文章

JBoss AS 7 上的 HttpTunnelingServlet

如何修改 JBoss AS 7.1 上内置的 h2 数据库?

JBoss AS7部署插件(jboss-as-maven-plugin)

Jboss AS7 无法正常关闭

如何在不同端口后面的单个 JBoss AS 6 实例上运行不同的应用程序?

Jboss AS 6.1.0 与 Java7 的握手超时