学习express可能很多人会遇到跨域问题,这个也是前端学习express首当其冲的一个问题。
express有两种方法解决在这里记录一下:
方法一(未亲测):
express设置
app.all('*', function(req, res, next) {
res.header("Access-Control-Allow-Origin", "*");
res.header("Access-Control-Allow-Headers", "Content-Type,Content-Length, Authorization, Accept,X-Requested-With");
res.header("Access-Control-Allow-Methods","PUT,POST,GET,DELETE,OPTIONS");
res.header("X-Powered-By",' 3.2.1')
if(req.method=="OPTIONS") res.send(200);
else next();
});
方法二(cors模块,亲测有效):
var cors = require('cors'); //安装cors模块
app.use("/data/text",cors()); //app为express对象 设置/data/text路径下的接口为跨域接口
app.use('/data/text', textData); //可以跨域访问
app.use('/data/hh', textData); // 不可以跨域访问
如果不区分路劲所有接口都可以跨域的话 app.use(cors()); 即可实现
测试端代码:
axios({
method: 'post',
url: 'http://10.14.1.170:3000/data/text/getJson',
dataType:'json',
headers:{
'Access-Control-Allow-Origin': '*',
'Content-Type': 'application/json',
},
data: {
firstName: 'Fred',
lastName: 'Flintstone'
}
}).then((res)=>{
console.log(res)
})