在向lambda端点发出ajax请求时,我禁止403。 它可能是一个CORS问题。
serverless.yml
service: aws-nodejs # NOTE: update this with your service name
provider:
name: aws
runtime: nodejs4.3
functions:
weather:
handler: handler.weather
events:
- http:
path: weather
method: get
cors: true
handler.js
'use strict';
var request = require('request');
module.exports.weather = (event, context, callback) => {
request('http://api.openweathermap.org/data/2.5/weather?APPID=__ID__&lat=40.66&lon=-73.77', function (error, response, body) {
if (!error && response.statusCode == 200) {
const response = {
statusCode: 200,
headers: {
"Content-Type": "application/json",
"Access-Control-Allow-Origin": "*"
},
body: body
};
callback(null, response);
}
});
};
```
我尝试在API网关中启用CORS,但是我收到无效的响应代码错误。
您能否建议如何修复错误以及可能导致错误的原因?
答案 0 :(得分:2)
确保在进行任何更改后部署API,例如添加CORS。这几次我被咬了。
答案 1 :(得分:1)
如果您正在使用HTTP或Lambda'代理'集成时,非OPTIONS方法必须返回相关的CORS头(在本例中为Access-Control-Allow-Origin)。如果您在GET方法上使用代理集成,那么您在控制台中看到的两个错误就可以了。配置后端以发回Access-Control-Allow-Origin标头,然后重试。
答案 2 :(得分:0)
如果您使用的是无服务器框架,可以通过在函数的http事件下指定cors: true
轻松完成:
functions:
hello:
handler: handler.hello
events:
- http:
path: user/create
method: get
cors: true
您可以在docs。
中找到更多详细信息