簡體   English   中英

AWS API 網關資源中的“啟用 CORS”?

[英]"Enable CORS" in AWS API Gateway resource?

我的 AWS API 網關有問題。 我正在使用 Angular 4 開發一個 web 應用程序(使用 TypeScript 語言),但是如果我從前端調用 PUT 方法,則會出現以下錯誤消息:

Method PUT is not allowed by Access-Control-Allow-Methods in preflight response.

這很奇怪,因為在 AWS 控制台中,PUT 方法完美運行(我在部署后的一個階段直接從 API 網關控制台進行了許多測試,一切正常)。 如果我 go 到“操作/啟用 CORS”所有方法都有檢查,包括 PUT 方法,我沒有解釋 API 網關到底有什么問題。

如果在 API 網關中一切正常,為什么會出現此錯誤? 有沒有辦法改變這些CORS?

我記得前段時間被同樣的問題困擾時......

使用 Lambda 或 HTTP 代理集成時,您至少需要在 lambda 的響應中指定Access-Control-Allow-Origin標頭。 您可能指定了額外的(目前手頭沒有任何代碼)。 我確實記得這條消息有點誤導,從管理控制台進行的測試之所以有效,是因為它並沒有真正使用 CORS,因為控制台執行測試的方式。

看看最后一部分: 為 REST API 資源啟用 CORS

exports.handler = async (event) => {
    const response = {
        statusCode: 200,
        headers: {
            "Access-Control-Allow-Headers" : "Content-Type",
            "Access-Control-Allow-Origin": "https://www.example.com",
            "Access-Control-Allow-Methods": "OPTIONS,POST,GET"
        },
        body: JSON.stringify('Hello from Lambda!'),
    };
    return response;
};

您需要將Access-Control-Allow-Origin替換為客戶端應用程序使用的主機名。 作為快速測試使用* ,但不要投入生產,因為這違背了 CORS 的目的。

嘗試將授權方的Token Source添加到AllowHeaders

點擊Enable CORS,然后將Token Source添加到Access-Control-Allow-Headers的末尾

AllowHeaders: "'Content-Type, Authorization, X-Amz-Date, X-Api-Key, X-Amz-Security-Token, {your Token Source}'"

在此處輸入圖像描述

請按照以下步驟操作,

  1. 在 /services 資源下創建一個新的 OPTIONS 方法
  2. 在 OPTIONS 方法中創建並填充 Access-Control-Allow-Origin/Method/Headers。

創建 OPTIONS 后啟用如下所示的 CORS

在此處輸入圖片說明

來源:- https://forums.aws.amazon.com/thread.jspa?messageID=644489

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM