微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

前端处理跨域问题!

一、为什么会出现跨域:

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

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

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

同源策略(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种常见的前端跨域解决方案(详解) - 知乎

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐