如何在Jersy中允许多个域用于CORS和ContainerResponseFilter。

时间:2017-06-20 14:37:00

标签: java rest jersey cors

我正在使用JAX-RS球衣实现实现RESTful Web服务。 我想允许多个域访问我的Web服务,但不是全部。 目前我已经编写了以下代码,只允许一个域用于CORS。 任何人都可以解释如何在Jersey实现中允许特定的多个域。

public class CORSResponseFilter implements ContainerResponseFilter {

    public void filter(ContainerRequestContext requestContext, ContainerResponseContext responseContext) throws IOException {

        MultivaluedMap<String, Object> headers = responseContext.getHeaders();
        headers.add("Access-Control-Allow-Origin", "www.xxxxx.com");
        headers.add("Access-Control-Allow-Methods", "GET, POST, DELETE, PUT");          
        headers.add("Access-Control-Allow-Headers", "X-Requested-With, Content-Type, X-Codingpedia");
    }
}

1 个答案:

答案 0 :(得分:3)

动态设置标题值。拥有您想要允许的预定义原始列表。在filter方法中,从请求上下文中获取function loopRight(){ $('.g_scroll').stop().animate({scrollLeft:'+=20'}, 'fast', 'linear', loopRight); } function loopLeft(){ $('.g_scroll').stop().animate({scrollLeft:'-=20'}, 'fast', 'linear', loopLeft); } function stop(){ $('.g_scroll').stop(); } $('#right').hover(function () { loopRight().children(); },function () { stop(); }); $('#left').hover(function () { loopLeft(); },function () { stop(); }); 标头。这将具有请求的原始域。根据允许的来源列表进行检查。如果它在列表中,则将Origin标题中的域作为允许的来源。如果它不在那里,请抛出Origin说不允许原点。