Node.js 已在节点/express中启用CORS,但正在获取;对飞行前请求的响应不';t通过访问控制检查”;

Node.js 已在节点/express中启用CORS,但正在获取;对飞行前请求的响应不';t通过访问控制检查”;,node.js,http,express,cors,axios,Node.js,Http,Express,Cors,Axios,我得到一个错误: 加载失败:对飞行前请求的响应未通过访问控制检查:请求的资源上不存在“访问控制允许来源”标头。因此,不允许访问源“” 在前端,我使用的是axios: const instance = axios.create({ baseURL: 'http://localhost:3000', timeout: 1000, headers: {"Access-Control-Allow-Origin": "*"} }); instance.post('/users/registe

我得到一个错误:

加载失败:对飞行前请求的响应未通过访问控制检查:请求的资源上不存在“访问控制允许来源”标头。因此,不允许访问源“”

在前端,我使用的是axios:

const instance = axios.create({
  baseURL: 'http://localhost:3000',
  timeout: 1000,
  headers: {"Access-Control-Allow-Origin": "*"}
});

instance.post('/users/register').then((res) => {
  console.log(res);
}).catch((err) => {
  console.log(err);
});
在服务器端使用express时,我使用的是cors:

var cors = require('cors');
var corsOptions = {
   origin: '*',
   optionsSuccessStatus: 200 
}
app.use(cors(corsOptions));

我得到的响应代码是200,我确实看到了“Access Control Allow Origin”标题,但在服务器端没有得到任何信息。有什么想法吗?

您很可能还需要明确启用对
选项的支持
请求(即“CORS飞行前”)。有关如何执行此操作的详细信息,请参阅

对于您的具体情况,我想补充以下内容:

app.options('/users/register', cors(corsOptions));
或者,如果要为所有请求启用它:

app.options('*', cors(corsOptions));

您很可能还需要显式启用对
选项
请求的支持(即“CORS飞行前”)。有关如何执行此操作的详细信息,请参阅

对于您的具体情况,我想补充以下内容:

app.options('/users/register', cors(corsOptions));
或者,如果要为所有请求启用它:

app.options('*', cors(corsOptions));

只有您的服务器需要设置头,它不应该出现在http客户端请求中(在您的示例中是axios)。所以不要从axios发送:
头:{“访问控制允许源”:“*”}
。您看到返回的服务器头了吗?在浏览器中的“网络”选项卡上,或使用
curl-v-xpost检查它http://localhost:3000/users/register
在终端中。只有服务器需要设置标头,它不应出现在http客户端请求中(在您的axios中)。所以不要从axios发送:
头:{“访问控制允许源”:“*”}
。您看到返回的服务器头了吗?在浏览器中的“网络”选项卡上,或使用
curl-v-xpost检查它http://localhost:3000/users/register
在终端中。