我收到错误:
无法加载http://localhost:3000/users/register:对预检请求的响应未通过访问控制检查:否' Access-Control-Allow-Origin'标头出现在请求的资源上。起源' http://localhost:8080'因此不允许访问。
在前端我使用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,我确实看到了“访问控制 - 允许 - 来源”#39;标题但我在服务器端没有得到任何东西。有什么想法吗?
答案 0 :(得分:2)
您很可能还需要明确启用对OPTIONS
请求的支持(即“CORS预检”)。有关如何执行此操作的详细信息,请参阅https://github.com/expressjs/cors#enabling-cors-pre-flight。
对于您的具体情况,我会添加以下内容:
app.options('/users/register', cors(corsOptions));
或者如果您想为所有请求启用它:
app.options('*', cors(corsOptions));