浅显易懂、vue-cli跨域解决

前言

解决跨域我想在坐的各位都会听说过几个解决跨域的方法
有什么 cors后端配置(加几个请求头)、jsonp(利用script的src属性)、还有vue-cli前端配置。

本文讲述的就是vue-cli前端配置的方式解决跨域

其实一说跨域就要想到很多问题

  1. 跨域是什么?
  2. 为什么会产生跨域?
  3. 如何解决跨域

下面会 一 一 解答

步入正题

跨域是什么?

跨域其实就是违背了浏览器的一种策略,这种策略就是同源策略(Same origin policy),头大 同源策略又是什么鬼

同源策略(Same origin policy)是一种约定,它是浏览器最核心也最基本的安全功能,如果缺少了同源策略,则浏览器的正常功能可能都会受到影响。可以说Web是构建在同源策略基础之上的,浏览器只是针对同源策略的一种实现。
——百度百科说的

说白了就是 假如你们家的房子,是不是不允许陌生人进入,如果可以随便进入,那么久有可能被盗了,那么这个时候,锁头和钥匙就出现了为了保证家的安全。

所以我们引出浏览器的同源策略,就是指必须在同一个协议,域名,端口号下,而且三者必须一致的。这个时候,我们就说是同源。

为什么会产生跨域?

也就是 为了网络安全起见,浏览器设置了一个同源策略,规定只有域名,端口,协议全部相同,就叫做同源。当页面在执行一个脚本时,会检查访问的资源是否同源,如果不是,就会报错。可是在实际开发中,经常会有跨域加载资源的需求,避免不了跨域请求,所以就出现了跨域。

如何解决跨域(重点)

用vue-cli(脚手架)创建的项目,新建vue配置文件 vue.config.js(名字固定)
vue.config.js
在此配置文件中解决跨域

代码示例

建议:看完下图 理解 在回过来仔细看代码

 // 前端解决跨域
 devServer:{
   // 自己的地址: http://localhost:8080/
   // 请求服务地址:http://localhost:5000/students
   
   // 设置代理proxy
   proxy:{
     //‘/api’请求前缀,只有在端口号后携带/api的url才会去请求目标服务器
     '/api':{
       target:'目标基础路径',// 例如:http://localhost:8080/ 就是基础路径
       // 将请求url上有匹配的字符串替换为 第二个参数
       pathRewrite:{'正则':''},
       // 以下不写默认为true ------
       ws:true, //用于支持websocket
       changeOrigin:true //用于控制请求头中的host值
     },
     // 例
     // 请求地址端口后面带有/demo的url进行跨域操作,请求时将/dome替换为空防止目标服务器没有此文件夹
     '/demo':{
       target:'http://xxx:5000',
       pathRewrite:{'^/demo':''},
     }
     // 注意:配置好跨域请求时,在进行请求时要将请求 协议、域名、端口号写成自己的地址
     // 例如 axios.get('http://localhost:8080/demo/students')
   }
 }

说白了 就是vue帮你开一个代理服务器,然后帮你去进行请求,然后把请求出来的数据返回到代理服务器中,代理服务器再把数据返回客户端,即可实现跨域数据访问。
服务器之间是不会产生跨域问题的

画图解析

vue跨域





到这里就结束了,后续还会更新vue全家桶相关,还请持续关注!
感谢阅读,若有错误可以在下方评论区留言哦!!!

Vue-cli中的跨域问题可以通过配置代理服务器来解决。在vue.config.js配置文件中,可以使用devServer的proxy选项来设置代理。具体操作如下: 1. 在项目根目录下找到vue.config.js文件。 2. 找到devServer选项,并在其中添加proxy配置。 3. 在proxy中设置需要代理的请求地址,以及目标地址。 4. 重启项目,验证跨域问题是否解决。 例如,如果需要代理请求地址以/api开头的请求,并将其转发到线上的地址,可以按照以下格式配置proxy: ```javascript module.exports = { devServer: { // ...省略其他配置 proxy: { '/api': { target: 'http://线上的地址' } } } } ``` 同时,需要确保在axios请求中不设置baseURL,即去掉baseURL配置项。然后重启项目,验证跨域问题是否解决。 请注意,这种代理配置只适用于开发阶段,不适用于生产环境。\[2\] #### 引用[.reference_title] - *1* *3* [如何解决跨域问题以及vuecli开发环境用代理服务器解决跨域问题](https://blog.csdn.net/weixin_45371730/article/details/121892285)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^koosearch_v1,239^v3^insert_chatgpt"}} ] [.reference_item] - *2* [vue-cli解决跨域问题](https://blog.csdn.net/Moraxz/article/details/128414628)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^koosearch_v1,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Thetimezipsby

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值