vue解决跨域问题

这两天有朋友用vue写页面遇到了跨域问题(其实是后台的问题),但是在局域网下也得把数据调过来,我在这里简单总结两种方法吧,希望对大家有帮助。
跨域问题的报错是下面这样的:
在这里插入图片描述

第一种办法:用vue-resource

输入指令

npm install vue-resource --save

然后在main.js文件引入

import VueResource from 'vue-resource'
Vue.use(VueResource)

接下来在需要的vue单文件组件里调接口就可以了,会用到jsonp格式,写以下的代码

this.$http.jsonp('https://192.168.0.188:8081/api/Values', {},{headers: {},emulateJSON: true })
      .then((res) => {
         console.log(res);
      })
      .catch(function(err){
         console.log(err)
      })

这种办法,可以在控制台打开network,看看调用返回的内容,状态码是200就说明调用成功

第二种方法:用第三方接口proxyTable

1 在config目录下index.js文件中设置proxyTable

proxyTable: {
      '/v1': {
        target: 'https://api.douban.com',
        changeOrigin: true,   //设置允许跨域
        pathRewrite: {
          // /v1将代表target/v1 
          '^/v1': '/v1'
        }
      }
    }

2 因为在新版的vue-cli的package.json中webpack-dev-server没有设置–open,所以打开package.json文件在”scripts”属性中的”dev”属性中手动添加–open,如下代码所示

"scripts": {
    "dev": "webpack-dev-server --open --inline --progress --config build/webpack.dev.conf.js",
    "start": "npm run dev",
    "build": "node build/build.js"
  },

3 在需要的vue的单文件组件里调用就行

      axios
        .get(
          "/v1/getServiceInfo?xxxxxx"
        )
        .then(res => {
          console.log(res.data)
        })
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值