簡體   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