Node.js 如何正确设置ExpressJs API CORS

Node.js 如何正确设置ExpressJs API CORS,node.js,express,cors,Node.js,Express,Cors,我有一个使用axios的单页应用程序(SPA),它试图从同一台服务器上运行的ExpressJSAPI获取信息 在SPA axios设置中,我具有以下功能: headers: { 'Access-Control-Allow-Origin': '*', 'Authorization': store.getters.token, 'user': store.getters.user }, 在API中,我使用的npm包cors如下: const express = require('expres

我有一个使用axios的单页应用程序(SPA),它试图从同一台服务器上运行的ExpressJSAPI获取信息

在SPA axios设置中,我具有以下功能:

headers: {
 'Access-Control-Allow-Origin': '*',
 'Authorization': store.getters.token,
 'user': store.getters.user
},
在API中,我使用的npm包cors如下:

const express = require('express');
const path = require('path');
const cookieParser = require('cookie-parser');
const logger = require('morgan');
const cors = require('cors');

const app = express();

app.use(logger('dev'));
app.use(express.json());
app.use(cookieParser());
app.use(express.static(path.join(__dirname, 'public')));
app.use(cors());

const indexRouter = require('./routes/index');
const adminRouter = require('./routes/adminRoute');
// More routes

app.use('/api', indexRouter);
app.use('/api/admin', adminRouter);
app.use('/api/user', userRouter);
// using more routes
这在本地运行时效果很好,但将api放在服务器上(使用节点应用程序)时,会出现CORS错误:

跨源请求被阻止:同源策略不允许读取mysite.com上的远程资源。(原因:CORS请求未成功)

我可以直接从浏览器访问api,并获得无问题的响应(因为它没有使用交叉引用),但至少我知道api正在运行

我尝试创建以下内容(在定义路线之前),但没有成功:

app.use(function(req, res, next) {
  res.header("Access-Control-Allow-Origin", "*");
  res.header("Access-Control-Allow-Headers", "Origin, X-Requested-With, Content-Type, Accept");
  next();
});

我做错了什么?

这真的很奇怪,允许你只编写
应用程序。使用(cors())
,它现在应该可以工作了,因为在
应用程序之后,使用(cors())
你会写:

app.use(函数(请求、恢复、下一步){
res.header(“访问控制允许原点”、“*”);
res.header(“访问控制允许头”、“来源、X请求、内容类型、接受”);
next();
});
然后您应该尝试使用cors()中间件。为了正确设置cors,请检查cors的文档。

这不起作用的原因是,我托管ExpressJS api的web酒店没有设置他们的nginx web服务器代理,以便它可以正确接受选项请求并返回
访问控制允许来源:api.site.com

如果您需要有关cors设置的更多信息,请查看这些链接


你好,是的,当然我分别尝试了这些:)啊,现在我看到我发布了一个包含这两个选项的集合代码。很抱歉