5

我正在尝试将此 CORS 过滤器移植到 JAX-RS 2。

但是,我看不到如何从ContainerResponseContext中获取Response对象(如在旧代码中),我在ContainerResponseFilter的覆盖方法中传递。

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

4

1 回答 1

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));
           }
    }

}
于 2013-07-26T13:59:58.740 回答