我在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);
}
在服务器端,我可以看到第一个来电与授权&#39;正确评价标题,而所有其他人都没有这样的标题。
我错过了什么?
谢谢
cghersi
答案 0 :(得分:2)
我解决了我的问题所以我想给其他人的答案处于同样的情况。
1)问题是从服务器端启用OPTIONS http请求。实际上,第一次调用同一个网址但是使用了动词&#39; OPTIONS&#39;然后使用POST | GET方法第二次调用真实URL。如果服务器没有正确回答第一个选项&#39; OPCES&#39;电话,例如指定正确的允许标题等,第二个调用不起作用。
2)符号
settings.headers = {
'Authorization': 'Bearer <my access token>'
};
无效。设置标头的唯一方法是:
settings.beforeSend = function (request) {
request.setRequestHeader('Authorization', 'Bearer <my access token>');
};
希望这可以在将来帮助其他人。
cghersi