簡體   English   中英

向 API 網關發出 POST 請求時出現 CORS 錯誤

[英]CORS error when making POST request to API Gateway

我正在向 API 網關上的端點發出 POST 請求,當我發出請求時,出現以下錯誤:

Access to fetch at 'API_URI' from origin 'http://localhost:3000' has been blocked by CORS policy: No 'Access-Control-Allow-Origin' header is present on the requested resource. If an opaque response serves your needs, set the request's mode to 'no-cors' to fetch the resource with CORS disabled.

POST API_URI net::ERR_FAILED 200
    POSTRequest @ Home.js:17
    getFileData @ Home.js:71
    callCallback @ react-dom.development.js:3945
    invokeGuardedCallbackDev @ react-dom.development.js:3994
    invokeGuardedCallback @ react-dom.development.js:4056
    invokeGuardedCallbackAndCatchFirstError @ react-dom.development.js:4070
    executeDispatch @ react-dom.development.js:8243
    processDispatchQueueItemsInOrder @ react-dom.development.js:8275
    processDispatchQueue @ react-dom.development.js:8288
    dispatchEventsForPlugins @ react-dom.development.js:8299
    (anonymous) @ react-dom.development.js:8508
    batchedEventUpdates$1 @ react-dom.development.js:22396
    batchedEventUpdates @ react-dom.development.js:3745
    dispatchEventForPluginEventSystem @ react-dom.development.js:8507
    attemptToDispatchEvent @ react-dom.development.js:6005
    dispatchEvent @ react-dom.development.js:5924
    unstable_runWithPriority @ scheduler.development.js:468
    runWithPriority$1 @ react-dom.development.js:11276
    discreteUpdates$1 @ react-dom.development.js:22413
    discreteUpdates @ react-dom.development.js:3756
    dispatchDiscreteEvent @ react-dom.development.js:5889
    Home.js:26 TypeError

TypeError: Failed to fetch
    at POSTRequest (Home.js:17:1)
    at getFileData (Home.js:71:1)
    at HTMLUnknownElement.callCallback (react-dom.development.js:3945:1)
    at Object.invokeGuardedCallbackDev (react-dom.development.js:3994:1)
    at invokeGuardedCallback (react-dom.development.js:4056:1)
    at invokeGuardedCallbackAndCatchFirstError (react-dom.development.js:4070:1)
    at executeDispatch (react-dom.development.js:8243:1)
    at processDispatchQueueItemsInOrder (react-dom.development.js:8275:1)
    at processDispatchQueue (react-dom.development.js:8288:1)
    at dispatchEventsForPlugins (react-dom.development.js:8299:1)

奇怪的是,我go進入雲表,在日志中看到API發送的數據沒有錯誤? 我還啟用了 CORS 並出現 4xx 和 5xx 錯誤,並在多次執行此操作后暫存 API 以確保不是那樣。

這是我發送 POST 請求的代碼:

const POSTRequest = (JSONBody) => {
        fetch('API_URI', {
            method: 'POST',
            body : JSON.stringify(JSONBody),
            headers: {'Content-Type': 'application/json'}
        })
        .then(function (response) {
          console.log(response);
        })
        .catch(function (error) {
          console.log(error);
        });
    }

這是我的 lambda function 代碼連接到我的 API 的端點,它只返回發送給它的任何數據:

import json

def lambda_handler(event, context):
    data = json.loads(event['body'])
    print(data)
    print(event['body'])
    
    
    return {
        "statusCode": 200,
        "body": json.dumps(data),
        "headers": {
            'Content-Type': 'application/JSON',
        },
    }

您需要在 lambda function 上設置 CORS 標頭

請參閱此處的參考資料: https://docs.aws.amazon.com/apigateway/latest/developerguide/how-to-cors.html

暫無
暫無

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

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