在AWS上,我構建了一個使用API網關在Web上公開的Lambda函數。使用CORS從遠程web客戶端調用AWS API網關
對Amazon API的訪問受到Amazon Cognito的保護。
我的問題是我無法從test.mydomain.com託管客戶端發送請求到這個API,即使是在我上Cognito成功驗證(因此在發送請求頭中所需的令牌)。
我在我的網絡客戶端上使用的代碼將請求發送到API網關端點:
function ajaxPost(url, data, callback) {
var req = new XMLHttpRequest();
req.open("POST", url);
req.addEventListener("load", function() {
if (req.status >= 200 && req.status < 400) {
callback(req.responseText);
} else {
console.error(req.status + " " + req.statusText + " " + url);
}
});
req.addEventListener("error", function() {
console.error("URL " + url + " unreachable.");
});
req.setRequestHeader("Content-Type", "application/json");
req.setRequestHeader("Authorization", data.get("id-token"));
data = JSON.stringify(data);
req.send(data);
}
我啓用了通過AWS控制檯API方法CORS,也是對我的瀏覽器進行測試,這樣交叉域名請求應該被允許。
編輯
添加訪問控制展露報頭中的API網關CORS配置後, 錯誤消息我從Chrome控制檯得到的是:「的XMLHttpRequest無法加載https://XXXX.execute-api.us-east-1.amazonaws.com/prod/RessourceName的預檢反響。無效HTTP狀態代碼401「,我可以在OPTIONS響應標題中看到」x-amzn-errortype:UnauthorizedException「。
現在已經過去幾天了,在查看每個API網關教程和配置後,我仍然陷入困境......任何幫助將不勝感激,非常感謝!
'OPTIONS'請求是否從curl工作?例如'curl -v -X選項https:// ...' –
我得到了與Curl相同的「401/Unauthorized」響應...謝謝! – edouardtheron