一、为什么会出现跨域的问题?

跨域:浏览器从一个域名的网页去请求另一个域名的资源时,域名、端口、协议任一不同,都是跨域。
在前后端分离的模式下,前后端的域名是不一致的,此时就会发生跨域访问问题。跨域问题来源于JavaScript的同源策略,即只有 协议+主机名+端口号(如存在)相同,则允许相互访问。也就是说JavaScript只能访问和操作自己域下的资源,不能访问和操作其他域下的资源。跨域问题是针对JS和ajax的。而axios是通过Promise实现对ajax技术的一种封装,也同样存在跨域问题。

二、解决方案

这里我就使用本机的开启两个不同的端口来测试。

未处理跨域前的报错

没有做跨域处理请求是这样的:

 axios.get('http://localhost:8080/getData').then(res => {console.log(res)}).catch(err => {console.error(err); })

跨域资源共享(CORS)
前端进行反向代理来解决跨域问题。原理图如下:

1、vue项目的端口是8080

2、自己电脑开启了一个8080的端口,请求/getData就会放回json数据。

3、配置代理

1.在vue2.0中

修改config文件夹下的index.js文件,在proxyTable中加上如下代码:

   proxyTable: {'/api': {target: 'http://localhost:8080',  //要解决跨域的接口的域名secure:false,           //如果是https接口,需要配置这个参数changeOrigin: true,  // 如果接口跨域,需要进行这个参数配置pathRewrite: {'^/api': ''  // 路径重写}},},

然后在请求中axios中这样写

 axios.get('/api/getData').then(res => {console.log(res)}).catch(err => {console.error(err); })

分析:

target后面的就是需要请求的网址的公共部分,然后用/api来代理这个,最后重写一些路径,请求的时候使用的我们的代理的api来作为前缀。
这个前缀我们可以自定义,proxyTable是对象,所以我们可以配多个代理。
跨域解决

2.在vue3.0中

vue-cli3 脚手架搭建完成后,项目目录中没有 vue.config.js 文件,需要手动创建
新建一个vue.config.js,配置以下信息,同样可以解决。

module.exports = {   devServer: {proxy: {'^/api': {target: 'http://localhost:8080/',//接口的前缀ws:true,//代理websockedchangeOrigin:true,//虚拟的站点需要更管originpathRewrite:{'^/api':''//重写路径}}}}
}

小结:

changeOrigin: true :开启代理:在本地会创建一个虚假服务器,然后发送请求的数据,并同时接收请求的数据,这样服务端和服务端就可以进行数据的交互。
api就是接口实际请求的前缀,去代理了我们的实际的接口前缀的公共部分,也就是协议+主机名+端口号
比如 请求接口为localhost:8080/getData 我们只需要传入:getData
那么公共的域名就是localhost:8080,我们就是在请求接口的公共域名localhost:8080改为api/即可!
把项目运行起来可以看到接口请求的路径为 :localhost:8081/api/getData
而进过代理后,实际的请求路径是 : localhost:8080/getData

vue如何解决axios请求前端跨域问题相关推荐

  1. 如何实现vue前端跨域,proxyTable解决开发环境前端跨域问题

    如何实现vue前端跨域,proxyTable解决开发环境前端跨域问题 参考文章: (1)如何实现vue前端跨域,proxyTable解决开发环境前端跨域问题 (2)https://www.cnblog ...

  2. webpack+vue解决前端跨域问题

    webpack+vue解决前端跨域问题 参考文章: (1)webpack+vue解决前端跨域问题 (2)https://www.cnblogs.com/wei-dong/p/10689072.html ...

  3. 前端跨域请求get_解决前端跨域请求的几种方式

    利用 JSONP 实现跨域调用 说道跨域调用,可能大家首先想到的或者听说过的就是 JSONP 了. 1.1 什么是JSONP JSONP 是 JSON 的一种使用模式,可以解决主流浏览器的跨域数据访问 ...

  4. 解决前端跨域的几种方法

    解决前端跨域的几种方法 了解跨域出现的原因 解决跨域的几种方法 想要解决跨域 先要知道为什么会出现跨域 跨域:指的是浏览器不能执行其他网站的脚本 它是由浏览器的同源策略造成的 是浏览器对javascr ...

  5. 前端交互之“解决前端跨域的三种方法”

    1.什么是前端跨域? 跨域是浏览器为了安全而做出的限制策略:浏览器请求必须遵从同源测试: http://www.bilibili.com:8080:/anime/?key=calue路径 键值对 同协 ...

  6. 记录一次若依框架 前端跨域访问 ruoyi -vue

    Ruoyi -vue 若依框架 前端跨域访问 总的思路 创建一个用于第三方平台使用的request拦截器,并定义一个新的path ,最后配置 deserver,其实网上也有很多 对于我这样JAVA开发 ...

  7. node.js后端及Vue前端跨域解决方案

    node.js后端及Vue前端跨域解决方案 从目前我了解的情况来看,前后端跨域使用的方式有很多种,这里记录我使用最顺手的一种,即在后端使用cors跨域 node.js后端跨域解决方案 先看后端的入口文 ...

  8. Nginx 代理解决前端跨域问题

    目录 一.什么是 nginx 二.nginx 的用途 三.代理 1.正向代理 2.反向代理 四.nginx.conf 配置文件的基本结构 五.nginx 的内置变量 六.nginx 解决跨域的原理 七 ...

  9. Vue 前端跨域的解决方案(心得记录)

    背景: 今天面试一面和二面都还ok,三面是两个小姐姐(工作性质应该是外包驻场,所以有甲方来面),简历上巴拉巴拉的简单聊了一下,到了关键了,小姐姐说问一下基础的东西(这也是最怕的,毕竟Vue我之前用的挺 ...

最新文章

  1. 使用的postman心得
  2. android官方wifidemo,Android应用开发:连接指定Wifi的Demo分享
  3. Spring Boot细节挖掘(拦截器)
  4. Spring Boot 学习之Controller
  5. python 保留顺序去重_Python入门很简单,只要掌握3456点
  6. android 集成融云客服,第三方客服
  7. win10电脑网速慢怎么解决
  8. F - Ingenuous Cubrency ( UVa 11137 ,立方数之和,递推关系,算法进阶手册)
  9. 高通平台紧急呼叫问题总结
  10. Linux挂载msdos分区,磁盘构造/msdos分区(fdisk)格式化(mkfs)和挂载
  11. 风景日历java制作_风景日历制作系统
  12. position:relative;top属性移动div后的空白怎么去掉?
  13. 【标题】视频标注软件DARKLABEL V2.4 主页中英对照图
  14. 简图记录-正则表达式原理与应用基础
  15. python微信公众号框架_轻松实现python搭建微信公众平台
  16. y0usef(vulnhub)
  17. 获取各大电商平台商品详情api(api接口)
  18. 登录接口已修复梦想贩卖机V2 2.0.4 修复版,附带安装教程。
  19. 复无法自动修复此计算机,win10自动修复而且无法重置
  20. 什么是hql,与sql的区别

热门文章

  1. 华为畅享二十Android是,华为畅享20Pro配置怎么样?华为畅享20Pro参数配置分析
  2. 安装gcc, cmake和itk
  3. FCPX插件12组史诗大片电影片尾演职员滚动字幕模板CineCredit
  4. Vue组件通信以及.sync修饰符的使用
  5. ios逆向入门笔记-HOOK-QQ登录
  6. 多叉树的二叉树表示法(左儿子右兄弟)
  7. java 类修饰符、成员变量修饰符、方法修饰符总结
  8. linux C语言 常用函数(系统调用等) 持续更新
  9. 三星s6 显示无服务器,科普小米手机无服务怎么办及三星S6来电报号功能开启方法...
  10. halcon学习-vector_to_rigid/similarity/创建灰度渐变/创建及加入队列,例程