前端vue3解决跨域问题

前端vue3解决跨域问题

适用环境:vue3+axios

问题产生

简单来说,跨域产生的原因是浏览器请求到的前端网页与前端请求的网页不在同一个域或同一个端口
比如说我访问了百度www.baidu.com这个网页,百度这个网页加载到你的浏览器了,然后你点击了搜索按钮,网页请求www.souhu.com的资源。这个时候问题产生了,由于www.baidu.com与www.souhu.com不是同一个域,浏览器就报错“啊啊啊,你这不能访问啊,拒绝你!”
但是假设网页访问www.baidu.com/aaa.html又不会报错,是因为www.baidu.com/aaa.html与www.baidu.com是同一个域
前后端分离的项目中常常出现这种问题,以前后端可控于是自己在后端解决了。

解决方案

叭叭了半天估计大家也不耐烦了,直接来解决方法吧
做一个代理,通过虚拟的代理服务器访问不同域的网站

步骤一

项目目录下新建 vue.config.js文件,如果有就直接修改
vue.config.js文件位置
其中这样配置:

module.exports = {
    devServer: {
        proxy: {
            '/api': {
                target: 'https://test.com/',//这里填入你要请求的接口的前缀
                ws:true,//代理websocked
                changeOrigin:true,//虚拟的站点需要更管origin
                secure: true,                   //是否https接口
                pathRewrite:{
                    '^/api':''//重写路径
                }
            }
        }
    }
}

其中/api的名称你可以修改为你想要的值
而且vue.config.js是自动导入的,一般不需要额外配置所以配置了还是不生效一般是你的问题

步骤二

在你想用的位置import axios
导入axios

import Axios from "axios"
Axios.defaults.baseURL='/api'
步骤三 愉快的调用吧!

比如我想访问https://test.com/zhuli,那么我配置的/api中target的值为https://test.com,访问时访问/zhuli就OK了,由于前面将Axios.defaults.baseURL改为/api,所以每次访问都有https://test.com的前缀

Axios({
      method:'get',
      url:'/zhuli',
      params: {
       'test':123
      }
    }).then(resp => {
      console.log(resp)
    })
PS

如果你想直接点,可以直接略过步骤二,使用

axios({
      method:'get',
      url:'/api/zhuli',
      params: {
       'test':123
      }
    }).then(resp => {
      console.log(resp)
    })

有同样功效!!!
萌新写文,要是文中有错误还请大佬们批评指正哈

解决方案参照了这位大大的文:axios解决跨域问题(vue-cli3.0)

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值