前端处理跨域问题!

一、为什么会出现跨域:

简单理解:就是域名、端口号、协议之中只要有一个不同。都是跨域。

在前后端分离的情况下,前后端的域名是不一样的,此时就出现了跨域的问题。

出于浏览器的同源策略限制。

同源策略(Sameoriginpolicy)是一种约定,它是浏览器最核心也最基本的安全功能,如果缺少了同源策略,则浏览器的正常功能可能都会受到影响。

可以说Web是构建在同源策略基础之上的,浏览器只是针对同源策略的一种实现。

同源策略会阻止一个域的javascript脚本和另外一个域的内容进行交互。

所谓同源(即指在同一个域)就是两个页面具有相同的协议(protocol),主机(host)和端口号(port)

二、什么是跨域

当一个请求 url 的协议、域名、端口三者之间任意一个与当前页面 url 不同即为跨域

当前页面url 被请求页面url 是否跨域 原因

http://www.test.com/ http://www.test.com/index.html 否 同源(协议、域名、端口号相同)

http://www.test.com/ https://www.test.com/index.html 跨域 协议不同(http/https)

http://www.test.com/ 百度一下,你就知道 跨域 主域名不同(test/baidu)

http://www.test.com/ http://blog.test.com/ 跨域 子域名不同(www/blog)

http://www.test.com:8080/ http://www.test.com:7001/ 跨域 端口号不同(8080/7001)

三、解决问题

vue项目解决跨域:

在vue.config.js里面

const { defineConfig } = require('@vue/cli-service');
module.exports = defineConfig({
    publicPath: './',
    transpileDependencies: true,
    devServer: {
        proxy: {
            '/api': {
                // 请求的代称,写在Axios里的BaseUrl
                target: ' http://sale.gomicsgene2.com:8091/', // 真实请求URl
                ws: true,
                changeOrigin: true, // 允许跨域
                pathRewrite: {
                    //替换,通配/api的替换成对应字符
                    //     /* 重写路径,当我们在浏览器中看到请求的地址为:http://localhost:8080/api/core/getData/userInfo 时
                    //       实际上访问的地址是:http://localhost:8088/spring/core/getData/userInfo,因为重写了 /api
                    //      */
                    '^/api': '' //当你的接口中没有/api字眼时,采用这种,直接替换成空即可
                        //     '^/api': '/api'   //当你的接口中刚好有/api 时,采用这种方式
                }
            }
        }
    }
});

把之前axios里面baseURL换成/api就可以了

当uniapp项目遇到跨域问题:

去官网可以咯!

什么是跨域 | uni-app官网

还看不懂去这9种常见的前端跨域解决方案(详解) - 知乎

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值