簡體   English   中英

AWS API 網關、Lambda、JavaScript CORS

[英]AWS API Gateway, Lambda, JavaScript CORS

我正在嘗試使用 java 腳本訪問 AWS api 網關以通過頭文件調用 lambda。 通過郵遞員測試工作正常。

在此處輸入圖片說明 但是后來我嘗試通過java腳本訪問在此處輸入圖片說明

我得到以下信息:

'內容類型,X-Amz-日期,授權,X-Api-Key,X-Amz-Security-Token,Access-Control-Allow-Headers,Access-Control-Allow-Origin' 在此處輸入圖片說明

我已按照許多文章中的建議將 acaH 和 acaO 添加到 AWS api 中選項的標頭映射中,保存並重新部署沒有任何影響。 在此處輸入圖片說明

我在 GET 和 OPTION 方法上都啟用了 CORS 無濟於事。

我會坦率地承認我幾乎不了解 CORS 概念,我是否遺漏了一些非常明顯的東西?

您正在嘗試從null來源訪問API。

如控制台錯誤中所述, Access from origin 'null' has been blocked ,原始源值為null通常表示請求是來自計算機上的文件(而不是來自網站),或者是重定向操作的結果。

您最好改為檢查lambda函數。 有時,當函數內部暴露一些錯誤時,將返回該cors錯誤。

當您有一個 Lambda 函數和調用它的 AWS API 時,AWS API 中的設置可能不會返回 CORS 所需的標頭。 即使您在 API 設置中設置它,它也可能被 Lambda 返回覆蓋。

在這種情況下,解決方案是在 LAMBDA 函數中返回標頭。

這是我的 LAMBDA python 代碼中的一個示例。 您可以使用任何語言的類似解決方案。

只需自己返回 CORS 所需的標頭即可。

        return {
            'statusCode': 200,
            'headers': {
                'Access-Control-Allow-Headers': 'Access-Control-Allow-Methods,Content-Type,X-Amz-Date,Authorization,X-Api-Key,X-Amz-Security-Token,X-Requested-With',
                'Access-Control-Allow-Origin': '*',
                'Access-Control-Allow-Methods': 'DELETE,GET,HEAD,OPTIONS,PATCH,POST,PUT',
                'Access-Control-Allow-Credentials': 'true'
            },
            'body': json.dumps({
                "customerID": data['customerID']
            })
        }

暫無
暫無

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

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