繁体   English   中英

授权标头仅在AJAX CORS请求中附加一次

[英]Authorization Header appended only once in AJAX CORS request

我在CORS场景中从Javascript调用RESTful API。

我正在使用JQuery发送我的POST验证请求。 这是一个例子:

function post(settings, addAccessToken) {
        settings.type = 'POST';
        settings.cache = false;
        if (settings.dataType === undefined)
            settings.dataType = 'json';
        if (addAccessToken) {
            settings.xhrFields = { withCredentials: true };
            settings.beforeSend = function (request) {
                request.setRequestHeader('Authorization', 'Bearer <my access token>');
            };
            settings.headers = {
                'Authorization': 'Bearer <my access token>'
            };
        }
        return $.ajax(settings);
    }

在服务器端,我可以看到第一个调用的“ Authorization”标头值正确,而其他所有调用都没有这样的标头。

我想念什么?

谢谢

Cghersi

我解决了我的问题,所以我想给处于相同情况的其他所有人答案。

1)问题是从服务器端启用了OPTIONS http请求。 实际上,第一次调用相同的URL,但带有动词“ OPTIONS”,然后第二次使用POST | GET方法调用实际的URL。 如果服务器没有正确应答第一个“ OPTIONS”调用,例如指定了正确的“允许的标题”等,则第二个调用不起作用。

2)符号

settings.headers = {
 'Authorization': 'Bearer <my access token>'
};

不管用。 设置标头的唯一方法是:

settings.beforeSend = function (request) {
 request.setRequestHeader('Authorization', 'Bearer <my access token>');
};

希望这可以在将来对其他人有所帮助。

Cghersi

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM