vue项目中axios跨域设置
最近项目中遇到一个问题,测试环境和线上环境需要调同一个接口(接口地址是线上的),本地开发的时候遇到了跨域的问题,刚开始用了fetch解决的,代码如下
方法一
step1:安装包node-fetch,然后再在vue文件script下面引入以下代码
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跨域设置的更多相关文章
- 关于vue项目中axios跨域的解决方法(开发环境)
1.在config文件中修改index.js proxyTable: { "/api":{ target: 'https://www.baidu.com/muc/',//你需要跨域 ...
- 【原创】Vue.js 中 axios 跨域访问错误
1.假如访问的接口地址为 http://www.test.com/apis/index.php (php api 接口) 2.而开发地址为http://127.0.0.1:8080,当axios发起 ...
- vue项目中解决跨域问题axios和
项目如果是用脚手架搭建的(vue cli)项目配置文件里有个proxyTable proxyTable是vue-cli搭建webpack脚手架中的一个微型代理服务器,配置如下 配置和安装axios 安 ...
- vue项目中的跨域源请求拦截问题CORS头缺少'Access-Control-Allow-Origin'
这里使用的是axios发请求出现的. 访问的api接口是: 在不同域之间访问是比较常见,在本地调试访问远程服务器....这就是有域问题. VUE解决通过proxyTable 解决办法: 1.检查请求方 ...
- Vue+webpack项目中实现跨域的http请求
目前Vue项目中对json数据的请求一般使用两个插件vue-resource和axios, 但vue-resource已经不再维护, 而axios是官方推荐的且npm下载量已经170多万,github ...
- 前端vue开发中的跨域问题解决,以及nginx上线部署。(vue devServer与nginx)
前言 最近做的一个项目中使用了vue+springboot的前后端分离模式 在前端开发的的时候,使用vue cli3的devServer来解决跨域问题 上线部署则是用的nginx反向代理至后台服务所开 ...
- Vue项目多域名跨域
在Vue项目中请求后台数据时,遇到的多域名跨域问题. 直接上代码: assetsSubDirectory: "static", assetsPublicPath: "/& ...
- axios,vue-echarts, async, vue 图表数据处理; axios 跨域代理; 异步同步请求接口;生命周期函数
1.vue-echarts 安装和组件引用 插件官网 https://github.com/ecomfe/vue-echarts 安装 npm install eacharts vue-echarts ...
- vue项目中 axios 和Vue-axios的关系
文章收集于:https://segmentfault.com/q/1010000010812113 在vue项目中,会经常看到如下代码: 今天看到有些项目是这样写的,就有点看不懂了. ----解 ...
- Vue 中 axios 跨域配置 (!!!配置完成需要重新运行,不然也不起作用)
当拿到一个网址如:https://music.163.com/store/api/categorypage/list 获取数据是出现如下: 证明该网址不能非常直观的拿到数据.接下来我们试试跨域拿这个 ...
随机推荐
- python+接口参数化(ddt和pytest.mark.parametrize())使用
一.ddt(基于unittest) 实例:字典解包[{},{}] test_data=t.read_excel(mode,case_list)@ddt class Interface(unittest ...
- FCOS网络(free anchor)
FCOS FCOS网络解析 FPN输出多个特征图,然后如何处理这些特征图? [问题]"特征图相对原图的步距是s"是个什么东西
- mysql学习问题解决
1.字符串转时间格式函数: STR_TO_DATE('2017-10-19 16:47:00', '%Y-%m-%d %H:%i:%s') oracle的为to_date 2.specified tw ...
- 在 Vue 项目中使用 MQTT
Vue 是一款由尤雨溪及其团队开发的渐进式 Javascript 前端框架.该框架具备数据双向绑定.组件化.响应式和轻量等特点,搭配其脚手架 Vue CLI 使得开发者更加容易上手,大大减少了学习成本 ...
- oracle form lov 查询慢
设置lov属性,如下:
- centos 等保漏洞修复
一.设置密码复杂度 [root@localhost ~]# vi /etc/pam.d/system-auth password requisite pam_pwquality.so try_firs ...
- 第一个WCF程序(最小实现)
环境:Microsoft Visual Studio 2017 注意事项:右键"以管理员身份"启动VS. 目标:实现一个加法运算,并在服务器端D盘新建一个文件夹. 一.服务器端创建 ...
- 回溯-1-N皇后(Backtracking-1-N Queens)
#include <stdio.h> #define N 4 enum bool {TRUE, FALSE}; void print_Q(int *Q) { int i; for (i = ...
- nvim比较两个文件的不同
vim -d file1 file2 或 vimdiff file1 file2 2. 如果已经打开了文件file1,再打开另一个文件file2进行比较: :vert diffsplit file2 ...
- php 图片加水印插件
问题:背景透明的水印图片,在加到原图上后不显示,待解决 <?php /** * 图片加水印(适用于png/jpg/gif格式) * * @author flynetcn * * @param $ ...