【发布时间】:2021-02-26 14:03:14
【问题描述】:
正如标题所说,我正在尝试配置一个运行节点 js 的本地 rest api 服务器,同时我有一个带有 axios 的 vue 项目。我浏览了整个互联网,尝试了每个服务器/客户端配置、服务器头设置、cors 包、axios 头配置,但我仍然在控制台中有 cors 策略错误。邮递员通过调用 localhost:3000/everyapiPOSTorGet 来工作,但来自浏览器的 axios 却没有。 每个人都可以指出一些可行的解决方法吗?
这是我的实际节点配置:
const express = require("express");
const PORT = process.env.port || 3000;
const apiRouter = require('./routes');
const app = express();
app.use(express.json())
app.use('/', apiRouter)
// CORS middleware
app.use(function (req, res, next) {
res.header("Access-Control-Allow-Origin", "*");
res.header(
"Access-Control-Allow-Headers",
"Authorization, X-API-KEY, Origin, X-Requested-With, Content-Type, Accept, Access-Control-Allow-Request-Method"
);
res.header("Access-Control-Allow-Methods", "GET, POST, OPTIONS, PUT, DELETE");
res.header("Allow", "GET, POST, OPTIONS, PUT, DELETE");
next();
})
app.listen(PORT, () => {
console.log("Server is listening on port: ", PORT);
});
谢谢!
编辑:我忘了说显然 vue 项目在 localhost:8080 或 8081 上(取决于我是否有更多项目正在运行)和服务器在 localhost:3000
【问题讨论】:
-
你使用
vue-cli吗? -
如果您使用
vue-cli,您可以通过setting up proxy 避免CORS 问题。在您的示例中,您可以使用此devServer: { port: 8080, proxy: { '/api': { target: 'http://localhost:3000', changeOrigin: true, } } },。这意味着如果您拨打localhost:8080/api,呼叫将被代理到您的后端localhost:3000/api -
谢谢 ljubadr 它有效!,我不知道 vue cli 代理
-
我很高兴它成功了!我稍后会创建一个答案