我知道这个问题已经得到回答,其中一些工作了,但对我而言却没有。我正在努力寻找解决此问题的方法:
Access to XMLHttpRequest at 'http://lolcahost:9000/api/users' from origin 'http://localhost:8080' has been blocked by CORS policy: No 'Access-Control-Allow-Origin' header is present on the requested resource.
我已经尝试下载chrome扩展程序,但没有帮助我,使用 app.use(cors())也没有帮助我。
这是我在expressjs中的代码
/* Importing all necessary packages. */
const express = require('express');
const cors = require('cors');
const bodyParser = require('body-parser');
/* Default port */
const port = process.env.PORT || 9000;
/* Creating express object */
const app = express();
app.use(bodyParser.json());
app.use(bodyParser.urlencoded({extended: false}));
app.use('/api', require('./routes/route'));
app.use(cors());
app.get('/', (request, response) => {
response.json({
HOME: "HELLO JSON"
})
});
app.listen(port, () => {
console.log(`Listening at port ${port}`)
});
这是我在vuejs中试图渲染数据的代码。
getUsers() {
axios
.get("http://localhost:9000/api/users/")
.then(response => (this.results = response.data))
.catch(error => console.log(error));
}
答案 0 :(得分:3)
您正在使用cors
路由的/api
中间软件之后。因此,实际上cors
中间件甚至没有被调用。将cors
置于其他中间件之上。
const app = express();
app.use(cors());
app.use(bodyParser.json());
app.use(bodyParser.urlencoded({extended: false}));
app.use('/api', require('./routes/route'));
中间件按照初始化顺序调用。现在,/api
首先被初始化,并且不是中间件(不会调用next()
函数),因此路由之后,任何中间件基本上都是无法访问的代码。
答案 1 :(得分:0)
尝试一下。
app.use(function(req, res, next) {
res.header("Access-Control-Allow-Origin", "http://localhost:8080"); // update to match the domain you will make the request from
res.header("Access-Control-Allow-Headers", "Origin, X-Requested-With, Content-Type, Accept");
next();
});
或
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();
});