在向lambda endpoints 发出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,但是我得到了无效的响应代码错误 .
![enter image description here](https://www.javaroad.cn/files/images/11742b0e-e6c6-4639-ad97-cb50ff5ec4f2.png)
您能否建议如何修复错误以及可能导致错误的原因?
3 回答
确保在进行任何更改后部署API,例如添加CORS . 这几次我被咬了 .
如果您正在使用HTTP或Lambda'代理'集成,则非OPTIONS方法必须返回相关的CORS头(在本例中为Access-Control-Allow-Origin) . 如果您在GET方法上使用代理集成,那么您在控制台中看到的两个错误就可以了 . 配置后端以发回Access-Control-Allow-Origin标头,然后重试 .
如果您使用的是无服务器框架,则可以通过在函数的http事件下指定
cors: true
来轻松完成:您可以在docs中找到更多详细信息 .