最近项目中遇到一个问题,测试环境和线上环境需要调同一个接口(接口地址是线上的),本地开发的时候遇到了跨域的问题,刚开始用了fetch解决的,代码如下

方法一

step1:安装包node-fetch,然后再在vue文件script下面引入以下代码

const fetch = require('node-fetch');
const Bluebird = require('bluebird');
fetch.Promise = Bluebird;
 
step2:vue文件中的调用接口代码
      return fetch('http://m.didimessage.com/api/shorturl/api/shorturl/generate',{
method:'post',
body: JSON.stringify(params),
headers: {
"Cross-Method":'CORS',
'Content-Type':'application/json',
},
}).then(res=>{
console.log('fetch-res',res);
return res.json();
}).then(data=>{
console.log('fetch-data',data);
if (data.code != "200") {
this.$notify({
title: "",
message: "res.msg",
type: "error",
});
return;
}
console.log('shortUrl',data.data.shortUrl);
window.location =data.data.shortUrl;
}).catch(err=>console.log('err',err))

但是遇到一个问题,在ie中打开的时候,ie不支持fetch,所以页面显示空白

所以只能在项目里在axios基础上设置跨域

方法二

step1: 在main.js里面写入以内代码

import Axios from 'axios'
Vue.prototype.$http = Axios

step2: 在项目的vue.config.js文件中插入以下代码(vuecli3构建的项目默认没有此文件,可以手动创建此文件,与src在同一级目录)

module.exports = {

  devServer: {
// host:"0.0.0.0",
proxy: {
'^/api': {
target: process.env.VUE_APP_HOST,
ws: true,
changeOrigin: true,
},
'/generate':{ //此处为设置跨域的配置,此处的generate可以随意命名,只要在vue文件调用接口时,对应的url地址以‘generate’开头,即可
target: 'https://m.didimessage.com',//你要请求的第三方接口前缀
changeOrigin: true, //开启代理:在本地会创建一个虚拟服务端,然后发送请求的数据,并同时接收请求的数据,这样服务端和服务端进行数据的交互就不会有跨域问题
pathRewrite: { // 这里重写路径运行后就代理到对应地址
'^/generate': '/' //意思是 把 '/generate' 替换成 '/'
}
}
}
}
} //我们想要访问的接口地址
//是'https://m.didimessage.com/api/shorturl/api/shorturl/generate'
//所以我们vue里请求的地址只需要在请求的url前面加一个'/generate'
//即 let url = 'generate/api/shorturl/api/shorturl/generate'

step3:在vue文件中,调用接口

      let _url = 'generate/api/shorturl/api/shorturl/generate';
this.$http.post(_url,params).then(data=>{
console.log('fetch-data',data); if (data.status != "200") {
this.$notify({
title: "",
message: "res.msg",
type: "error",
});
return;
}
console.log('shortUrl',data.data.data.shortUrl);
window.location =data.data.data.shortUrl;
}).catch(err=>console.log('err',err))

vue项目中axios跨域设置的更多相关文章

  1. 关于vue项目中axios跨域的解决方法(开发环境)

    1.在config文件中修改index.js proxyTable: { "/api":{ target: 'https://www.baidu.com/muc/',//你需要跨域 ...

  2. 【原创】Vue.js 中 axios 跨域访问错误

    1.假如访问的接口地址为 http://www.test.com/apis/index.php  (php api 接口) 2.而开发地址为http://127.0.0.1:8080,当axios发起 ...

  3. vue项目中解决跨域问题axios和

    项目如果是用脚手架搭建的(vue cli)项目配置文件里有个proxyTable proxyTable是vue-cli搭建webpack脚手架中的一个微型代理服务器,配置如下 配置和安装axios 安 ...

  4. vue项目中的跨域源请求拦截问题CORS头缺少'Access-Control-Allow-Origin'

    这里使用的是axios发请求出现的. 访问的api接口是: 在不同域之间访问是比较常见,在本地调试访问远程服务器....这就是有域问题. VUE解决通过proxyTable 解决办法: 1.检查请求方 ...

  5. Vue+webpack项目中实现跨域的http请求

    目前Vue项目中对json数据的请求一般使用两个插件vue-resource和axios, 但vue-resource已经不再维护, 而axios是官方推荐的且npm下载量已经170多万,github ...

  6. 前端vue开发中的跨域问题解决,以及nginx上线部署。(vue devServer与nginx)

    前言 最近做的一个项目中使用了vue+springboot的前后端分离模式 在前端开发的的时候,使用vue cli3的devServer来解决跨域问题 上线部署则是用的nginx反向代理至后台服务所开 ...

  7. Vue项目多域名跨域

    在Vue项目中请求后台数据时,遇到的多域名跨域问题. 直接上代码: assetsSubDirectory: "static", assetsPublicPath: "/& ...

  8. axios,vue-echarts, async, vue 图表数据处理; axios 跨域代理; 异步同步请求接口;生命周期函数

    1.vue-echarts 安装和组件引用 插件官网 https://github.com/ecomfe/vue-echarts 安装 npm install eacharts vue-echarts ...

  9. vue项目中 axios 和Vue-axios的关系

    文章收集于:https://segmentfault.com/q/1010000010812113 在vue项目中,会经常看到如下代码:   今天看到有些项目是这样写的,就有点看不懂了.  ----解 ...

  10. Vue 中 axios 跨域配置 (!!!配置完成需要重新运行,不然也不起作用)

    当拿到一个网址如:https://music.163.com/store/api/categorypage/list  获取数据是出现如下: 证明该网址不能非常直观的拿到数据.接下来我们试试跨域拿这个 ...

随机推荐

  1. Java基础学习:12、类变量和类方法(静态变量/方法)

    一.类变量: 1.定义:类变量也叫静态变量,是该类所有对象(一个类可以new多个对象)共享的一个变量,任何一个该类变量去访问它时,取到的都是相同的值,同样一个该类的对象去修改它时,修改的也是同一个变量 ...

  2. MargeSort

    归并排序(Merge Sort)是建立在归并操作上的一种有效,稳定的排序算法,该算法是采用分治法(Divide and Conquer)的一个非常典型的应用.将已有序的子序列合并,得到完全有序的序列: ...

  3. 51电子-STC89C51开发板:程序烧录(刷写) 到 IC 设置

    全部内容,请点击: 51电子-STC89C51开发板:<目录> ---------------------------  正文开始  --------------------------- ...

  4. shell 每秒调用某个地址的方法

    #!/bin/bash step=1 for (( i = 0; i < 60; i=(i+step) )); do curl http://fn.k6akg6f.bar/chat.php sl ...

  5. websocket状态码

    状态码 描述 0–999 保留段, 未使用 1000 正常关闭; 无论为何目的而创建, 该链接都已成功完成任务. 1001 终端离开, 可能因为服务端错误, 也可能因为浏览器正从打开连接的页面跳转离开 ...

  6. Using Yocto Project with BeagleBone Black 英文版、Using Yocto Project with BeagleBone Black中文版

    Using Yocto Project with BeagleBone Black  手册英文版.中文版 https://market.m.taobao.com/app/idleFish-F2e/wi ...

  7. qt 单元测试遇到的问题

    升级了qt creator到新版本.使用 google 单元测试,发现一个单元测试显示不对了. 测试结果输出:FATAL, 项目"t_ps"的测试未产生任何预期输出 比较了几个测试 ...

  8. 第14周 预习、实验与作业:Java数据库编程

    回想"流与文件"章节,如何将一组对象存储到文件中?主要步骤是什么. 把数据抽象为流,用字节输入输出流(InputStream,OutputStream)进行读写. 主要步骤为:创建 ...

  9. 从零搭建hadoop集群之安装虚拟机

    1.  打开 VMware 2. 点击编辑 ->  虚拟网络编辑器 点击VMnet8 选中NAT模式(于虚拟机共享主机的ip地址) 设置子网IP 点击NAT设置 3.   设置网关 :和子网IP ...

  10. 微信小程序监听view到顶部的高度

    view style='width:100%;height:80rpx;' id='navigation'></view> wx.createSelectorQuery().sele ...