node.js,axios实践

跨域问题可以参考阮一峰的博客,讲的很详细。
跨域资源共享 CORS 详解

这里记录一下,node.js服务端和axios/ajax请求的实践代码。
node.js

//以express为例
//设置跨域访问
app.all('*', function(req, res, next) {
    res.header("Access-Control-Allow-Origin", "*");
    res.header("Access-Control-Allow-Headers", "Content-Type");
    res.header("Access-Control-Allow-Methods","PUT,POST,GET,DELETE,OPTIONS");;
    next();
});

axios
get: 常规操作
post: 需要将post data转化成文本,否则content-type: application/json,跨域成非简单请求,进入预检请求。会增加一次HTTP查询请求。axios的一个bug. axios issues362

//get
axios.get('http://127.0.0.1:8081/getJson')
  .then(res=>{
    console.log(res);
  })
  .catch(err=>{
    console.log(err);
  })
//post
//user JSON.stringify or other libs like qs.stringify
let data=JSON.stringify({
  data:'axios',
  info:{
     type:'post',
  }
})
axios.post('http://127.0.0.1:8081/postJson',data)
    .then(res=>{
      console.log(res);
    })
    .catch(err=>{
      console.log(err);
    })

ajax
正常操作即可

//get
$.get('http://127.0.0.1:8081/getJson',(data,status)=>{
   console.log(status);
   console.log(data);
 })

//post
//跨域请求post
  $.post('http://127.0.0.1:8081/postJson',{
    data:'ajax',
    info:{
      data:'post',
    }
  },(data,status)=>{
    console.log(status);
    console.log(data);
  })

你可能感兴趣的:(node.js,axios实践)