Javascript 访问控制允许Origin在AngularJS应用程序中不工作

Javascript 访问控制允许Origin在AngularJS应用程序中不工作,javascript,angularjs,rest,jersey,cors,Javascript,Angularjs,Rest,Jersey,Cors,我正在尝试使用我的(CORS兼容的)RESTful服务 @Path("/greeting") @GET @Produces("application/json") public Response greeting() { String result = "{\"id\":1,\"content\":\"Hello, World!\"}"; return Response.ok() //200 .entity(result) .h

我正在尝试使用我的(CORS兼容的)RESTful服务

@Path("/greeting")
@GET
@Produces("application/json")
public Response greeting() {

    String result = "{\"id\":1,\"content\":\"Hello, World!\"}";

    return Response.ok() //200
            .entity(result)
            .header("Access-Control-Allow-Origin", "*")
            .build();
}
来自我的AngularJS应用程序

function ($scope, $http) {
    $scope.dashboard = "ESCO Dashboard";


    console.log('start');

    // Simple GET request example:
    $http({
        method: 'GET',
        url: 'http://localhost:8080/NobelGrid/api/users/greeting'
    }).then(function successCallback(response) {
        console.log('success');
        $scope.greeting = response.data;
    }, function errorCallback(response) {
        console.log('error');
    });


    console.log('end');

}
但我有一个错误:

无法加载XMLHttpRequest。对飞行前请求的响应未通过访问控制检查:请求的资源上不存在“访问控制允许来源”标头。因此,不允许访问源“”

使用Chrome的控制台网络,这似乎是正确的,因为响应头是:

不管怎样,从浏览器而不是从Angular应用程序访问REST服务,标题都是正确的

我还尝试了本教程:

使用他们的RESTful服务(他们说CORS也兼容),但结果是一样的

ps:我正在使用WebStorm作为IDE

更新-已解决

在服务器端写入此处理程序:

@Path("/greeting")
@OPTIONS
@Produces("application/json")
public Response greetingOPT() {


    return Response.status(200) //200
            .header("Access-Control-Allow-Origin", "*")
            .header("Access-Control-Allow-Methods", "GET, POST, DELETE, PUT, OPTIONS")
            .header("Access-Control-Allow-Headers", "X-Requested-With, Content-Type, X-Codingpedia,Authorization")
            .build();
}
它起作用了。开始时,它给了我另一个错误:

飞行前[…]中的访问控制允许标头不允许请求标头字段授权


但是在GET和POST的
访问控制允许标题中添加
授权
可以解决问题。

查看错误消息:

对飞行前请求的响应

查看网络日志:

请求方法:选项

看看你的API:

@得到


在浏览器向您编写的处理程序发出GET请求之前,您需要为编写一个处理程序。

Hi@Quentin!我不太明白(对不起):我必须为服务器端的选项编写一个处理程序?或者我必须在客户端制作一些东西?谢谢,您必须为服务器上的选项编写一个处理程序(或者更改请求,使其不需要飞行前检查(具体内容在回答中的链接另一端描述))。谢谢#昆廷!你能看看我的最新消息吗?