美文网首页vue 基础
vue请求跨域解决方法

vue请求跨域解决方法

作者: 倔强的满腔热血 | 来源:发表于2018-09-12 17:42 被阅读174次

    1. web服务器设置允许跨域

    例如express服务器,可以在app.js中添加如下代码:

    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 , yourHeaderFeild');
        res.header('Access-Control-Allow-Methods', 'PUT, POST, GET, DELETE, OPTIONS');
    
        if (req.method == 'OPTIONS') {
            res.send(200); /*让options请求快速返回*/
        }else {
            next();
        }
    })
    

    2.本地测试 使用http-proxy-middleware 代理解决

    例如请求的url:“http://f.apiplus.cn/bj11x5.json

    1、打开config/index.js,在proxyTable中添写如下代码:

    proxyTable: { 
      '/api': {  //使用"/api"来代替"http://f.apiplus.c" 
        target: 'http://f.apiplus.cn', //源地址 
        changeOrigin: true, //改变源 
        pathRewrite: { 
          '^/api': 'http://f.apiplus.cn' //路径重写 
          } 
      } 
    }
    

    2、使用axios请求数据时直接使用“/api”:

    getData () { 
     axios.get('/api/bj11x5.json', function (res) { 
       console.log(res) 
     })
    

    通过这中方法去解决跨域,打包部署时还按这种方法会出问题。解决方法如下:

    let serverUrl = '/api/'  //本地调试时 
    // let serverUrl = 'http://f.apiplus.cn/'  //打包部署上线时 
    export default { 
      dataUrl: serverUrl + 'bj11x5.json' 
    }
    

    相关文章

      网友评论

        本文标题:vue请求跨域解决方法

        本文链接:https://www.haomeiwen.com/subject/vnkbgftx.html