我正在使用 jersey 1.8、tomcat 7 和 spring 4 构建 jersey rest api
此服务将具有基本的 HTTP 身份验证,并将提供任何来源的信息(它将被来自不同域的我们的客户使用..)因此,使用 jersey 自己的结构启用 CORS。
我得到了 ContainerResponseFilter 的实现,它设置了 Access-Control-Allow-Origin 和 Access-Control-Request-Headers 标头。
import javax.ws.rs.core.Response;
import javax.ws.rs.core.Response.ResponseBuilder;
import com.sun.jersey.spi.container.ContainerRequest;
import com.sun.jersey.spi.container.ContainerResponse;
import com.sun.jersey.spi.container.ContainerResponseFilter;
public class ResponseCorsFilter implements ContainerResponseFilter{
@Override
public ContainerResponse filter(ContainerRequest req,
ContainerResponse contResp) {
// TODO Auto-generated method stub
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("")){
resp.header("Access-Control-Allow-Headers", reqHead);
}
contResp.setResponse(resp.build());
return contResp;
}
}
Run Code Online (Sandbox Code Playgroud)
我得到了 …