【问题标题】:Cross domain REST/Jersey web services with CORS使用 CORS 的跨域 REST/Jersey Web 服务
【发布时间】:2012-04-13 06:29:24
【问题描述】:

我想使用 CORS(跨域资源共享)制作跨域 REST Web 服务。我正在使用 Jersey 图书馆提供服务。

我需要知道

  1. 从服务器端的角度来看,我需要做哪些代码/配置更改?

  2. 如何从 HTML5/js 调用此服务。

谢谢

【问题讨论】:

标签: rest cross-domain jersey cors


【解决方案1】:

我用来在基于 Jersey 的嵌入式 Jetty 应用程序中启用 CORS 过滤器的步骤。

jetty-servlet 版本 - 2.12

  1. 在 pom 中添加了 cors-filter 依赖项
      <dependency>
       <groupId>com.thetransactioncompany</groupId>
       <artifactId>cors-filter</artifactId>
       <version>2.1.2</version>
      </dependency>
  1. 将 corsfilter 添加到应用程序的 ServletContextHandler 中。
 
ServletContextHandler context = new ServletContextHandler(ServletContextHandler.NO_SESSIONS); 

context.addFilter(CORSFilter.class, "/*", EnumSet.of(DispatcherType.INCLUDE,DispatcherType.REQUEST)); 

server.setHandler(context);//set handle to your server

【讨论】:

    【解决方案2】:

    我选择通过在 Jersey 容器级别提供服务器 CORS 响应来解决此问题。这可能会为某些应用程序提供更多便利,因为它可以应用来自容器的所有响应,而无需修改资源处理代码。

    首先必须创建一个容器响应过滤器,该过滤器将注入适当的标头。例如,对于任何响应都指示 Access-Control-Allow-Origin:* 的容器:

    class CORSFilter implements ContainerResponseFilter {
        @Override
        public ContainerResponse filter(ContainerRequest request, ContainerResponse response) {
            response.getHttpHeaders().add("Access-Control-Allow-Origin", "*");
            return response;
        }       
    }
    

    然后必须将过滤器添加到 Jersey 响应过滤器链中。这可以通过应用程序使用的资源配置来完成。

    ...
    DefaultResourceConfig rc = new ClasspathResourceConfig();
    rc.getContainerResponseFilters().add(new CORSFilter());
    
    // now create a simple lightweight server using this resource config.
    HttpServer server = HttpServerFactory.create(uri,rc);
    ...
    

    【讨论】:

      【解决方案3】:

      您的服务器端配置的所有信息都可以在enable-cors.org 找到。

      无需更改任何代码客户端,但我建议在使用 CORS 之前检查浏览器功能。可以找到测试代码,例如here

      【讨论】:

      猜你喜欢
      • 2015-08-22
      • 1970-01-01
      • 1970-01-01
      • 2012-09-10
      • 1970-01-01
      • 2011-01-01
      • 1970-01-01
      • 2012-11-29
      • 1970-01-01
      相关资源
      最近更新 更多