在ContainerResponseFilter中获得响应(JAX-RS 2)

时间:2013-07-26 11:43:27

标签: java jax-ws jax-rs cors

我正在尝试将this CORS filter移植到JAX-RS 2。

但是,我没有看到如何从Response获取ContainerResponseContext对象(如旧代码中那样)我在ContainerResponseFilter的重写方法中传递。

如果有一种更优雅的方式来使用JAX-RS 2进行CORS,那当然是首选。提前谢谢。

1 个答案:

答案 0 :(得分:10)

可以直接访问 ContainerResponseContext

@Provider
public class ResponseCorsFilter implements ContainerResponseFilter{

    @Override
    public void filter(ContainerRequestContext requestContext,
            ContainerResponseContext responseContext) throws IOException {
           responseContext.getHeaders()
                .putSingle("Access-Control-Allow-Origin","*");
           responseContext.getHeaders()
                 .putSingle("Access-Control-Allow-Methods",
                     "GET, POST, PUT, DELETE");
           List<String> reqHead=requestContext.getHeaders()
                     .get("Access-Control-Request-Headers");
           if(null != reqHead){
                responseContext.getHeaders()
                   .put("Access-Control-Allow-Headers", 
                        new ArrayList<Object>(reqHead));
           }
    }

}