Node.js Express CORS适用于除一个端点之外的其他端点
我有一个简单的Express项目作为API端点,使用cors作为中间件 cors可用于除一个端点之外的任何其他端点。这是我的代码快照:Node.js Express CORS适用于除一个端点之外的其他端点,node.js,express,cors,Node.js,Express,Cors,我有一个简单的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: fal
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
一起工作
注意:无需指定令牌Passport
要求。这是为了授权
编辑
这是ChromeDevTool中网络选项卡的快照。它只是发送选项
请求,这是响应头。响应中无Access Control Allow Origin
标题
您好,您可以尝试在express server中添加此行吗
app.options('*',cors())代码>。您还可以检查在调用/shuttles
端点时是否从客户端应用程序向*
添加了“访问控制源”标题。您好,您可以尝试在express server中添加此行吗
app.options('*',cors())代码>。您还可以检查在调用/shuttles
端点时,是否从客户端应用程序向*
添加了“访问控制源”标题,您可以在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));
您可以在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));
经过深思熟虑,在宇宙中找到了解决方案,我的Express应用程序托管在Google App Engine中,我意识到我的dispatch.yaml
包含
- url: "*/shuttles*"
service: shuttle
这是问题的根源。
只需重新设计穿梭服务和路线,就可以解决问题:D
谢谢你的评论,他们都很好。经过深思熟虑,在宇宙中找到了解决方案,我的Express应用程序托管在Google App Engine中,我意识到我的dispatch.yaml
包含
- url: "*/shuttles*"
service: shuttle
这是问题的根源。
只需重新设计穿梭服务和路线,就可以解决问题:D
感谢您的所有评论,它们都很好。用于编辑/更新您的问题,并在您向'/shuttles'端点发出请求时添加浏览器正在devtools控制台中登录的确切错误消息。另外,添加一个代码段,显示您用于发出请求的前端JavaScript代码。用于编辑/更新您的问题,并添加向“/shuttles”端点发出请求时浏览器正在devtools控制台中登录的确切错误消息。另外,添加一个代码段,显示您用于发出请求的前端JavaScript代码。感谢您的建议,但不幸的是,它不起作用:(cors在穿梭机
端点上仍然不起作用,但在其他端点上起作用。我不确定为什么它不适用于该特定路由,您能否尝试显式地添加cors
此路由。类似于app.get('/shuttles',cors(corsOptions)),其他参数
。你看到我对这个问题的编辑了吗?我附上了一个chrome devtool的快照,有什么线索吗?我只能看到标题不在那里,你必须在你这边进行一些调试,你是否尝试过显式传递cors
。谢谢你的建议,但不幸的是它不起作用:(cors在穿梭机
端点上仍然不起作用,但在其他端点上起作用。我不确定为什么它不适用于该特定路由,您能否尝试显式地添加cors
此路由。类似于app.get('/shuttles',cors(corsOptions)),其他参数
。你看到我对这个问题的编辑了吗?我附上了chrome devtool的快照,有什么线索吗?我只能看到标题不在那里,你必须在你的终端进行一些调试,你是否尝试过显式传递cors
。谢谢你的回复,但不幸的是,它在任何端点上都不起作用:(感谢您的回复,但不幸的是,它在任何端点上都不起作用:(