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