2017-10-12 147 views
1

我正確地在我的api的響應頭中做了cors配置。aws cognito && apiGateway返回狀態401

當我通過郵遞員測試了我的API與附着在報頭(「授權」)的經驗證令牌 ,它返回200

我檢查我的前端取代碼以請求API,似乎沒有錯誤或故障。

它怎麼會發生?沒有任何人與我現在正在掙扎的人相同。

加:

我的前端抓取代碼看起來像這樣。

export const getDoc = async (docId, token) => { 
    const path = `${apiGateway.URL}`; 
    const body = { 
     docId: docId 
    }; 
    const headers = { 
     Authorization: token, 
     'Content-Type': 'application/json' 

    }; 
    const result = await fetch(path, { 
     body, 
     headers, 
    }); 
    if (result.status !== 200) { 
     throw new Error('failed to get doc'); 
    } 
    return result.json(); 
}; 
+0

@VijayanathViswanathan當然,我已經在API網關中完成了基本的CORS配置。正如我上面提到的,在帖子中API調用成功。但它在我的前端代碼中不起作用 –

+0

「授權」請求標頭和「Content-Type:application/json」都會觸發瀏覽器執行預檢。所以這個問題正如我在之前的評論中所描述的那樣:您需要重新配置服務器以不要求對OPTIONS請求進行授權。原因是,瀏覽器在執行預檢OPTIONS請求時不會發送授權請求標頭。它不這樣做的原因是因爲該OPTIONS請求的整個目的是爲了讓瀏覽器詢問服務器,您是否允許擁有授權標頭的跨源請求? – sideshowbarker

回答

2

你應該輸入 「授權」 變成了 「令牌來源」 領域,而不是 'method.request.headers.Authorization'。否則,你會得到一個401錯誤。