我从我的网页发送post请求到AWS API Gateway,它正在调用lambda函数 . 在API网关中启用CORS .
错误:
无法加载api_gatewau_url:请求的资源上没有“Access-Control-Allow-Origin”标头 . 因此不允许原点'url'访问 .
该资源有两种方法:
-
OPTIONS(集成MOCK)
-
POST(集成Lambda)
如何解决CORS问题?
以下是发送邮件请求的代码 .
$.ajax({
type: "POST",
crossDomain: true,
url: "api_gateway_url",
data: JSON.stringify({
"param1": value1,
"param2": value2
}),
我还试图添加带有allow origin true的 Headers ,但没有运气 .
最奇怪的是,相同的配置和请求我尝试使用不同的api网关然后它工作正常,没有任何错误 .
2 回答
根据您的集成类型,您需要返回COR的标头 .
更多细节可以在,
https://developer.mozilla.org/en-US/docs/Web/HTTP/CORS#The_HTTP_response_headers
如果您使用的是任何集成,则可以从Lambda或要集成的其他源返回标头 .
对于Lambda,
如果您使用的是S3,
https://docs.aws.amazon.com/AmazonS3/latest/user-guide/add-cors-configuration.html
API Gateway CORS Mapping:
https://docs.aws.amazon.com/apigateway/latest/developerguide/how-to-cors.html
希望能帮助到你 .
如果您在API网关中使用代理集成,则从API网关启用CORS不起作用 . 您必须从Lambda代码本身设置Header'Access-Control-Allow-Origin' .
它在doc中提到过 .
Python代码示例: