带有AngularJS和JAX-RS的CORS

带有AngularJS和JAX-RS的CORS,angularjs,post,http-post,cors,jax-rs,Angularjs,Post,Http Post,Cors,Jax Rs,我正在编写一个web应用程序,前端使用AngularJS,后端使用JAX-RS。当chrome中的CORS扩展已启用“enable CORS”时,前端可以向后端成功发出HTTP post请求。当它关闭时,返回一个错误- “Access Control Allow Origin”标头包含多个值“,*”,但只允许一个值。因此,不允许访问源“” 后端有一个CORSFilter.java文件,配置如下- 公共类CORSFilter实现ContainerResponseFilter{ @Override

我正在编写一个web应用程序,前端使用AngularJS,后端使用JAX-RS。当chrome中的CORS扩展已启用“enable CORS”时,前端可以向后端成功发出HTTP post请求。当它关闭时,返回一个错误-

“Access Control Allow Origin”标头包含多个值“,*”,但只允许一个值。因此,不允许访问源“”

后端有一个CORSFilter.java文件,配置如下-

公共类CORSFilter实现ContainerResponseFilter{

 @Override
    public ContainerResponse filter(ContainerRequest request,
        ContainerResponse response) {

        response.getHttpHeaders().add("Access-Control-Allow-Origin", "*");
        response.getHttpHeaders().add("Access-Control-Allow-Headers",
            "origin, content-type, accept, authorization");
        response.getHttpHeaders().add("Access-Control-Allow-Credentials","true");
        response.getHttpHeaders().add("Access-Control-Allow-Methods",
            "GET, POST, PUT, DELETE, OPTIONS, HEAD");

        return response;
    }
}

我在各种stackoverflow帖子中尝试过一些建议,比如删除X-request-WITH并将UseXDomain设置为true-

删除$http.defaults.headers.common['X-Requested-With']; $http.defaults.useXDomain=true

我还尝试将内容类型更改为Form/URLEncoded,而不是Application/JSON。除了Chrome扩展之外,似乎没有一个能够发送帖子——这让我觉得解决方案应该在客户端


请帮忙提前感谢。

首先,尝试定位问题。检查,您是否有“Access Control Allow Origin”头响应ajax请求。若否,那个就意味着服务器端有问题,前端也并没有问题。如果是,似乎您为CORS编写了错误的标题。另外,请看一下使用实际原点作为
访问控制允许原点
而不是
*
我有一个值为127.0.0.1:XYZXX的访问控制允许原点作为响应。首先,尝试定位问题。检查,您是否有“Access Control Allow Origin”头响应ajax请求。若否,那个就意味着服务器端有问题,前端也并没有问题。如果是,似乎您为CORS编写了错误的标题。另外,请看一下使用实际原点作为
访问控制允许原点
而不是
*
我的访问控制允许原点的响应值为127.0.0.1:XYZXX。