首页 » node.js » 正文

‘Access-Control-Allow-Origin’跨域问题解决 (vue axios)

在nodejs中使用AXIOS发送get请求到其他IP请求数据时,会报错Access-Control-Allow-Origin之类的错误.
要解决的需要前端与webserver端共同配合才行. 因为我的webserver是ARM板子,响应请求数据中HTTP HEAD信息只有HTTP/1.1 200 OK\n,这显然不够.
经过查找资料,增加对应的http head信息如下:

    result = 5;
    // HTTP内容
    int dataLen = sprintf(n1, "{ \"result\": %lf }", result );
    // 发送 HTTP 响应
    mg_printf(nc, "HTTP/1.1 200 OK\n"
                  "Content-Type: application/javascript\n"
                  "Access-Control-Allow-Origin: *\n"
                  "Access-Control-Allow-Headers: X-Requested-With,Content-Type\n"
                  "Access-Control-Allow-Methods: PUT,POST,GET,DELETE,OPTIONS\n"
                  "Content-Length: %d\n"
                  "Cache-Control: no-cache\n\n"
                  "%s\n", dataLen,n1);

前端如果这样写不行

Vue.axios
 .get('http://192.168.10.208:9000/action/jsonTest',{withCredentials:true})
 .then(response => (console.log(response)))

改为以下写法就可以了

    Vue.axios({
        url: "http://192.168.10.208:9000/action/jsonTest",
        method: 'get',
        data: {
          id: 3,
          name: 'jack'
        }
      })
        .then(function (res) {
          console.log(res.data);
        })
        .catch(function (err) {
          console.log(err);
        })

发表评论