在express框架中使用axios的post方法出现报错,报跨域问题,前端拿到的json数据是undefined
先想要解决这个问题需要自己定义请求头,并且在vue中使用qs重新实例化一个axios,这个项目使用vue做前端框架,使用express写后台接口。
- 首先在express的app.js文件里设置携带请求头信息
var app = express();
app.use("*",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");
if (req.method === 'OPTIONS') {
res.send(200)
} else {
next()
}
})
- 在vue里面npm i --save qs,重新实例化一个axios
let instance = this.axios.create({
headers: {'content-type': 'application/x-www-form-urlencoded'}
});
如此就能解决使用post请求报跨域的问题,接下来讲用node.js写接口在express框架运行能拿到数据,但是前端拿到的数据是undefined的问题。
其实只要在后台将数据处理一下返回前段即可,主要在后端使用JSON的parse和stringify进行转换(这里说的只是用express框架,使用node.js写后台接口的情况)
1.将JSON对象转换为字符串
2.将JSON字符串转换为对象
此时在前端拿到的数据就是可以进行正常渲染