美文网首页
vue项目中vue.config.js配置跨域

vue项目中vue.config.js配置跨域

作者: 晴天守候 | 来源:发表于2020-04-30 15:20 被阅读0次

    调用后端接口访问后台数据,但是因为请求url的协议、域名、端口三者之间任意一个与当前页面url不同产生了跨域,而且后端也没有配置允许跨域(后端如果配置跨域通常是cors),所以前端就要配置跨域,Vue跨域在vue.config.js文件(这个文件要自己添加)里配置。

    后端提供的数据接口为:localhost:3000/web/news/list   
    注:该例子是由本地node提供的接口,因为端口不同,也产生了跨域。
    当然在服务端也可以通过安装cors插件配置跨域。
    

    未配置前

    WeChat8cf24d6c93d55a5e65bab2e20f78cd78.png

    在当前文项目根路径新建一个文件,文件名固定为vue.config.js

    module.exports = {
        // pabulicPath:process.env.NODE_ENV === 'production' ? '' : '',
        devServer:{
            host:'0.0.0.0',
            port:'8080',
            // https:false,
            open:true,
            //以上的ip和端口是我们本机的;下面为需要跨域的
            proxy:{ //配置跨域
                '/api':{
                    target:'http://localhost:3000/web',
                    ws:true,
                    changeOrigin:true,//允许跨域
                    pathRewrite:{
                        '^/api':''   //请求的时候使用这个api就可以
                    }
                }
            }
        }
    }
    

    调用跨域接口

    methods: {
        getData(){
          var param = {
            params:{
              devid:'8479593759372',
              user:'akdi',
              key:'8aad46f68c77e83ee2bcc3d9f9ec818a'
            }
          }
          this.$http.get('/api/news/list',param).then(res=>{
            console.log(res)
          })
        }
      }
    

    成功拿到数据

    image.png

    \color{red}{这里还有点需要特别注意的:修改配置后一定要重启项目,否则无法看到效果。}

    \color{red}{还有就是,如果你在axios配置有baseURL的话,要关掉,否则配置的代理跨域是无效的,还是执行baseURL的。}

    const http = axios.create({
        // baseURL:'http://localhost:3000/web/api',
    })
    

    相关文章

      网友评论

          本文标题:vue项目中vue.config.js配置跨域

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