[英]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.