一、什么是跨域
出于浏览器的同源策略限制。同源策略是一种约定,它是浏览器最核心也最基本的安全功能,如果缺少了同源策略,则浏览器的正常功能可能都会受到影响。知识点:跨域只会出现在浏览器上,小程序和APP开发不会有跨域问题
二、什么情况下会出现跨域
说人话就是域名不同的时候会出现跨域。下面以 百度 域名为例,在域名的:协议、主机名、域名、端口 任何一个与当前访问的站点域名不同时就会出现跨域
解决方案:
1.uni-app 项目
方法一:使用 HBuilderX 内置浏览器,内置浏览器是删除了浏览器的跨域限制的。
方法二:在项目根目录 manifest.json 文件中添加 h5 配置
"h5" : {
"devServer":{
"proxy":{
"^/api":{
"target":"http://127.0.0.1:8080",
"ws": true,
"changeOrigin": true
}
}
}
}
2.项目Vue.js 项目
在项目根目录 vue.config.js 文件中添加如下配置
/* 开发环境配置 */
devServer:{
/* 代理目录 */
proxy:{
'^/api':{
target:'http://127.0.0.1:8080',
ws: true,
changeOrigin: true
}
}
}
3.终极解决办法
如果你的项目不是工程化的,比如 原生开发或jquery技术栈的话用这种方式最简单粗暴
新建一个 Chrome 的桌面快捷方式 在快捷方式上右键,点击属性,在属性面板的目标中(引号后面)按一个空格,再添加以下代码:
--args --disable-web-security --user-data-dir=D:\MyChromeDevUserData
/* 或者 */
--disable-web-security --user-data-dir=D:\MyChromeDevUserData
添加成功过后重启浏览器会有提示:“您使用的是不受支持的‘命令行’标记: --disable-web-security,稳定性和安全性会有所下降”