我有一个简单的Express项目作为我的API端点,使用cors作为中间件。
除其他外,cors可以在其他任何端点上工作。这是我的代码快照:
const express = require('express');
var cors = require('cors');
const app = express();
app.use(cors());
app.get('/shuttles',
tokenPassport.authenticate('bearer', { session: false }),
(req, res) => {
// ....
// implementation goes here...
// ....
})
app.get('/deposit',
tokenPassport.authenticate('bearer', { session: false }),
(req, res) => {
// ....
// implementation goes here...
// ....
})
/deposit
中的CORS正在工作,但不能与/shuttles
一起使用。
注意:不用考虑tokenPassport
的要求。这是为了授权。
编辑
这是chrome devtool中的“网络”标签的快照。它仅发送OPTIONS
请求,这就是响应头。响应中没有Access-Control-Allow-Origin
标头。
答案 0 :(得分:2)
您可以在app.js
或server.js
文件中创建自己的中间件。
//CORS
app.use((req, res, next) => {
res.setHeader('Access-Control-Allow-Origin', '*');
res.setHeader('Access-Control-Allow-Methods', 'GET, POST, OPTIONS, PUT, PATCH, DELETE');
res.setHeader('Access-Control-Allow-Headers', 'X-Requested-With,Content-Type,Accept,Authorization');
res.setHeader('Access-Control-Allow-Credentials', true);
next();
});
如果您想使用cros
模块
const corsOptions = {
"origin": "*",
"methods": "GET, HEAD, PUT, PATCH, POST, DELETE",
// other options
}
app.use(cors(corsOptions));
答案 1 :(得分:1)
您好,您可以尝试在快速服务器
app.options('*', cors());
中添加此行。还可以检查在调用/shuttles
端点时是否从客户端应用程序中向*
答案 2 :(得分:0)
经过沉思,在宇宙中找到了解决方案,我的Express应用程序托管在Google App Engine中,我意识到我的dispatch.yaml
包含
- url: "*/shuttles*"
service: shuttle
这是问题的根源。 只需重新整理班车服务和路线,即可解决:D
感谢您的所有评论,没关系。