使用CORS的跨域REST/Jersey Web服务

sha*_*lic 4 rest jersey cross-domain cors

我想用CORS(跨源资源共享)制作跨域REST Web服务.我正在使用Jersey Libraries来提供服务.

我需要知道

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

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

谢谢

Sir*_*rko 9

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

没有必要更改任何代码客户端,但我建议在使用之前检查CORSP的浏览器功能.可以在此处找到测试代码.

  • @shashankaholic请看这里:http://software.dzhuvinov.com/cors-filter-installation.html (2认同)

小智 5

我选择通过在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;
    }       
}
Run Code Online (Sandbox Code Playgroud)

然后必须将过滤器添加到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);
...
Run Code Online (Sandbox Code Playgroud)