我在使用AWS API Gateway时遇到问题。 我正在使用Angular 4(使用TypeScript语言)开发Web应用程序,但是如果我从前端调用PUT方法, 出现以下错误消息:
Method PUT is not allowed by Access-Control-Allow-Methods in preflight response.
并且它非常奇怪,因为在AWS控制台中,PUT方法运行良好(我在部署后直接从API网关控制台进行了许多测试,并且一切运行良好)。如果我去"动作/启用CORS"所有方法都有检查,包括PUT方法,我不能准确解释API网关的问题。
如果在API网关中看起来一切正常,为什么会出现此错误?有没有办法改变这些CORS?
答案 0 :(得分:0)
请按照以下步骤进行操作
创建OPTIONS后启用CORS,如下所示
来源: - https://forums.aws.amazon.com/thread.jspa?messageID=644489
答案 1 :(得分:0)
我记得不久前被同样的问题打What ...
使用Lambda或HTTP代理集成时,您需要至少在lambda的响应中指定Access-Control-Allow-Origin
标头。您可能已指定其他(目前没有任何可用的代码)。我确实记得此消息有些误导,并且由于控制台执行测试的原因,并没有真正使用CORS,因此可以从管理控制台进行测试。
请查看Enabling CORS for a REST API resource
中的最后一部分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的目的。