我需要实现总部位于新泽西州的REST服务器CORS支持。我已经通过了一些可用的material和信息性的tutorials。 我发现两种方法的人正在使用:CORS Java服务器端实现
方法1:
简单直接的方法,即实现一个HTTP
过滤器,增加了CORS
头响应(新泽西具体)
public class ResponseCorsFilter implements ContainerResponseFilter {
public ContainerResponse filter(ContainerRequest req, ContainerResponse contResp) {
ResponseBuilder resp = Response.fromResponse(contResp.getResponse());
resp.header("Access-Control-Allow-Origin", "*")
.header("Access-Control-Allow-Methods", "GET, POST, OPTIONS");
String reqHead = req.getHeaderValue("Access-Control-Request-Headers");
if(null != reqHead && !reqHead.equals(null)){
resp.header("Access-Control-Allow-Headers", reqHead);
}
contResp.setResponse(resp.build());
return contResp;
}
}
方法2:
全面贯彻CORS按照其规范,即预检请求处理和所有头支持。一个这样的开源Java实现的视察源代码cors-filter
我的问题是哪种方法时,应采取?方法-1与方法-2的缺点可能是什么?
我的使用情况是所有来源/方法可以允许和Authorization
HTTP标头将全部REST
请求的一部分。我倾向于方法1,因为它似乎大多数默认的CORS设置足以满足我的用例,但不确定是否没有在服务器端实现完整的CORS规范会产生任何问题。
感谢您的答复,是每个请求应该被标记与存储在授权报头,其服务器上接收作任何处理之前验证公共令牌。 – harsh