首页 > 解决方案 > 本地主机到 AWS Lambda 没有“Access-Control-Allow-Origin”标头

问题描述

我有一个本地服务器,用于测试未来远程托管服务器的通信及其与 Lambda 无服务器 API 的通信。我向 API 发出的请求是一个 GET 方法,我目前配置了以下内容来处理跨站点通信。

使用无服务器框架,我cors: trueserverless.yml文件中启用

此外,响应设置为返回以下内容:

response = {
        "statusCode": 200,
        "headers": {
            'Access-Control-Allow-Headers': 'Content-Type',
            'Access-Control-Allow-Origin': '*',
            'Access-Control-Allow-Methods': 'GET'
        },
        "body": {
            "message": "Authorization Successful!"
        }
    }

但是,从 ahttp://localhost:8000到我托管的 API的链接单击会https://*id*.execute-api.us-east-1.amazonaws.com/prod/auth传递一条错误消息:

Access to XMLHttpRequest at 'https://*id*.execute-api.us-east-1.amazonaws.com/prod/auth' from origin 'http://localhost:8000' has been blocked by CORS policy: No 'Access-Control-Allow-Origin' header is present on the requested resource.

当我在 localhost:8000 上单击链接时获取此 API 时,是否应该向 GET 添加标头?我需要用这个更新任何东西AWS API Gateway吗?从无服务器框架文档看来,它cors: true会处理这个设置

标签: corsaws-api-gatewayserverless-framework

解决方案


您是否部署了 API 网关?确保在 API Gateway 中选择 GET 方法并在操作下拉列表中选择部署。通过查看您是否能够从 Postman 访问 API 网关,而不是浏览器,可以揭穿 CORS 问题。由于您返回 Access-Control-Allow-Origin:"*" 浏览器将允许该请求。


推荐阅读