首页 > 解决方案 > AWS API Gateway 'Access-Control-Allow-Origin' 标头不存在

问题描述

因此,像我之前的许多人一样,我也面临 AWS API 网关+Lambda(python) POST 请求的 CORS 错误。让我解释一下我所做的家庭作业。

  1. 按照链接并基本了解 CORS 的工作原理。

  2. 尝试启用 lambda 代理集成并尝试不使用它。

  3. 在手动配置尝试期间,我在 API 网关方法配置中手动添加了“Access-Control-Allow-Origin”:'*'。

  4. 在任何时候,我的 lambda 函数都设置为返回如下标题:

    'headers': { 'Access-Control-Allow-Headers': 'Content-Type', 'Access-Control-Allow-Origin': '*', 'Access-Control-Allow-Methods': 'OPTIONS,POST,得到' }

  5. 邮递员工作得很好,因为它对大多数有问题的人都有效。

  6. 当我在 chrome 中检查网络流量时,我得到 'Access-Control-Allow-Origin': '*' 作为 OPTIONS 标头的一部分。但是当 POST 请求没有我在 lambda 中添加的这些标头时。

  7. 目标页面托管在我的本地和 AWS Amplify 中,两者都有相同的问题。

几张图片供参考。

在此处输入图像描述

在此处输入图像描述

在此处输入图像描述

在此处输入图像描述

期待您的所有投入。

编辑:

按要求添加我的 lambda 代码:

import json
import urllib.parse
import boto3
import configparser
import os
import datetime
import json

print('Loading function')

# some more code here...        

def lambda_handler(event, context):
    logfilename = log(json.dumps(event, indent=2), "Debug")
    
    response = {
     'headers': {
            'Access-Control-Allow-Headers': 'Content-Type',
            'Access-Control-Allow-Origin': '*',
            'Access-Control-Allow-Methods': 'OPTIONS,POST,GET'
        },
     "statusCode": 200,
    "body": "{\"result\": \"Success.\"}"
     }
     
    return response

标签: python-3.xajaxamazon-web-servicesaws-lambdaaws-api-gateway

解决方案


推荐阅读