繁体   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