AWS Lambda 函数 API 端点 - 403 和 415 错误
Posted
技术标签:
【中文标题】AWS Lambda 函数 API 端点 - 403 和 415 错误【英文标题】:AWS Lambda function API end point - 403 and 415 error 【发布时间】:2019-05-29 10:09:43 【问题描述】:我已经设置了一个 AWS Lambda 函数,并尝试从前端进行访问。它在浏览器中运行良好,并返回我期望的响应。当我尝试从localhost
访问它时,我得到一个 403。我尝试按照here 和here 概述的步骤进行操作(没有像一些评论者提到的那样吹走我的整个 API),但无济于事。我在所有更改后重新部署。启用 CORS 后,我不再收到 403,而是收到 415。不确定下一步该怎么做,因为 Cloudwatch 日志中没有任何内容。
更多细节:我正在使用 Lambda:
我有一个 GET 方法(启用 CORS 后出现“选项”):
当我点击“启用 CORS”时会发生以下情况:
因为它在屏幕截图中被截断,这里是完整的标题列表:'Content-Type,X-Amz-Date,Authorization,X-Api-Key,X-Amz-Security-Token'
这是我的方法响应:
这是我在前端调用 lambda 的方式:
sendVerificationCode()
let data =
paramOne: x,
paramTwo: 'string',
paramThree: 'string'
return this.get('ajax').request('https://something.execute-api.us-east-1.amazonaws.com/beta/',
host: 'https://something.execute-api.us-east-1.amazonaws.com',
method: 'GET',
data: data
).then((response) =>
console.log('response', response)
);
这是我遇到的错误。第一个错误,在我启用 CORS 之前:
在我启用 CORS 之后:
【问题讨论】:
API Gateway CORS: no 'Access-Control-Allow-Origin' header的可能重复 Hii kira 我认为在您应该使用 lambda 代理并手动发送 cors 标头之前已经问过这个问题,就像接受的答案中提到的那样 您好!你能解释一下为什么我应该使用 Lambda 代理而不是 Lambda 吗?一定有办法用 Lambda 做到这一点。 我这样说是因为我自己在没有 lambda 代理的情况下尝试了很多,经过很多努力我失败并切换到 lambda 代理,其他人也发生了同样的事情 【参考方案1】:CORS 对 API 网关有点挑剔,您是否尝试过在根目录和方法上都启用它?这以前对我有用。您也可以尝试为您的 api 网关项目下载 javascript SDK 并使用它来访问路由,因为它为您设置了所有正确的设置。
【讨论】:
感谢您的提示!由于某种原因,在根上禁用的选项被禁用。以上是关于AWS Lambda 函数 API 端点 - 403 和 415 错误的主要内容,如果未能解决你的问题,请参考以下文章
如何使用 GET 请求将参数传递给 AWS Lambda 函数?
从 API Gateway 获取 terraform 中 AWS lambda 的端点