我有一个React应用程序,试图从aws访问无服务器。但是我有下面的错误
No 'Access-Control-Allow-Origin' header is present on the requested resource. Origin 'https://www.test.com' is therefore not allowed access. The response had HTTP status code 502.
终点网址为https://key.execute-api.ap-southeast-2.amazonaws.com/dev/samplefunction
在serverless.yml上的设置是
login:
handler: login.login
events:
- http:
path: login
method: post
cors:
origin: 'https://admin.differentdomain.com'
headers:
- MY_CUSTOM_HEADER
- Content-Type
- X-Amz-Date
- Authorization
- X-Api-Key
- X-Amz-Security-Token
我还有其他地方需要进行CORS配置吗?
最佳答案
此处详细说明了Serverless中的CORS设置:https://serverless.com/blog/cors-api-gateway-survival-guide/
除了serverless.yml中的配置(用于预检请求)之外,您还需要从代码中返回 header Access-Control-Allow-Origin
和Access-Control-Allow-Credentials
。在您的示例和Node.js实现中:
return {
statusCode: 200,
headers: {
'Access-Control-Allow-Origin': 'https://admin.differentdomain.com',
'Access-Control-Allow-Credentials': true,
},
body: {},
};
确保在第一个 header 中包含“https”部分,我以前偶然发现过这一点。
关于serverless-framework - 无服务器yml上的CORS,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/50761591/