【发布时间】:2020-12-17 14:57:30
【问题描述】:
我目前正在使用无服务器应用程序,我的 serverless.yml 看起来像
functions:
app:
handler: server.run
events:
- http:
path: /api/{any+}
method: ANY
- http:
path: /secure/api/{any+}
method: ANY
cors :
origins
- domain-url-1
- domain-url-2
正如您在上面看到的,一个安全路由需要授权,而非安全路由不需要传递任何授权标头。由于 lambda-proxy 不接受 api 网关响应,因此我将响应标头附加到我的 app.js 上,如下所示,对于每条路由,我在 res 对象中分别发送状态和状态代码。
app.use((req, res, next) => {
res.header("Access-Control-Allow-Origin", "*");
res.header("Access-Control-Allow-Headers", "*");
res.header("Access-Control-Request-Headers", "*");
// res.headersSent("Access-Control-Allow-Headers", "Content-Type");
res.header('Access-Control-Allow-Headers', "Origin, X-Requested-With, Content-Type, Accept, Authorization, accesstoken");
res.header('Access-Control-Allow-Credentials', true);
next();
});
但我的 api 网关适用于非安全路由,而对于安全路由,我遇到了 CORS 问题
** Response to preflight request doesn't pass access control check: No 'Access-Control-Allow-Origin' header is present on the requested resource.
polyfills.ff5fcb5319b1dc651f7b.js:1 GET https://8nv8r4ph65.execute-api.us-east-1.amazonaws.com/staging/secure/api/v1/legal/notification/list?rowsPerPage=15 net::ERR_FAILED **
我不确定我哪里出错了。
【问题讨论】:
标签: node.js aws-lambda cors aws-api-gateway serverless