跨域浏览器设置解决前端跨域问题

跨域浏览器设置解决前端跨域问题

目录

一、什么是跨域

二、什么情况下会出现跨域

三、uni-app 项目 解决跨域办法

四、Vue.js 项目 解决跨域办法

五、终极解决办法,删除浏览器跨域限制

一、什么是跨域

出于浏览器的同源策略限制。同源策略是一种约定,它是浏览器最核心也最基本的安全功能,如果缺少了同源策略,则浏览器的正常功能可能都会受到影响。知识点:跨域只会出现在浏览器上,小程序和APP开发不会有跨域问题

二、什么情况下会出现跨域

说人话就是域名不同的时候会出现跨域。下面以 百度 域名为例,在域名的:协议、主机名、域名、端口 任何一个与当前访问的站点域名不同时就会出现跨域

https://www.baidu.com:443

出现跨域时,浏览器控制台的报错如下图所示

切记:本文章只讲述 前端解决跨域的办法,并且前端解决跨域问题只在本地开发时有效,项目发布线上需要前端服务器配置请求代理比如 nginx的反向代理 或 后端允许跨域请求

解决跨域的方法就是“欺骗”浏览器 或 删除浏览器限制

三、uni-app 项目 解决跨域办法

方法一:使用 HBuilderX 内置浏览器,内置浏览器是删除了浏览器的跨域限制的。

方法二:在项目根目录 manifest.json 文件中添加 h5 配置,点我 查看 uni-app 文档说明。

"h5" : { "devServer":{ "proxy":{ "^/api":{ "target":"http://127.0.0.1:8081", "ws": true, "changeOrigin": true } } } }

页面请求代码示例

uni.request({ url:'/api/1.json', // url 要与 proxy 匹配,不能写成 xx.com/api.1.json method:'GET', success: (res) => { console.log(res); } }) 四、Vue.js 项目 解决跨域办法

在项目根目录 vue.config.js 文件中添加如下配置

/* 开发环境配置 */ devServer:{ /* 代理目录 */ proxy:{ '^/api':{ target:'http://127.0.0.1:8081', ws: true, changeOrigin: true } } }

页面请求代码,以 axios 库为例

request.get('/api/1.json',{ params }).then(res=>{ console.log(res) }) 五、终极解决办法,删除浏览器跨域限制

如果你的项目不是工程化的,比如 jQuery 技术栈的话用这种方式最简单粗暴

以 chrome 浏览器为例

【设置步骤】

新建一个 Chrome 的桌面快捷方式 在快捷方式上右键,点击【属性】,打开【属性】面板 在【属性】面板的【目标】中(chrome.exe 后面)按一下空格,再添加以下代码:

--args --disable-web-security --user-data-dir=D:\MyChromeDevUserData

或者

--disable-web-security --user-data-dir=D:\MyChromeDevUserData

设置成功以后再打开浏览器,会有提示:

“您使用的是不受支持的‘命令行’标记: --disable-web-security,稳定性和安全性会有所下降”

此时,正常用户都可以进行跨域访问了,比方本地的前端项目,直连测试或者线上环境的接口(前提是目标环境在当前浏览器登陆过,已经存在当前账号的cookies,session等信息)

以上就是跨域浏览器设置解决前端跨域问题的详细内容,更多关于跨域浏览器设置的资料请关注易知道(ezd.cc)其它相关文章!

推荐阅读