什么是跨域
一个url是由协议,域名,端口(默认80)组成,当一个url的协议域名端口三者之间任意有一个与当前页面url不同时为跨域
产生原因
由于浏览器的同源策略
同源策略(same origin policy)
是一种约定,它是浏览器核心也是基本的安全功能,它会阻止一个域的js脚本与另外一个域的内容进行交互,如果缺少了同源策略,浏览器容易受到xss,crr攻击
所谓同源(既在一个域),就是这两个页面具有相同的协议主机和端口号
非同源会出现的限制
- 无法读取非同源网页的cookie,localStroage
- 无法接触非同源网页的dom和js请求
- 无法向非同源地址发送ajax请求
如何解决跨域
proxy 配置代理
devServer: {
hot: true,
compress: true,
disableHostCheck: true,
proxy: {
'/api': {
target: 'http://152.136.185.210:5000', //你的接口地址
changeOrigin: true, //是否跨域
pathRewrite: {
'^/api': '' //接口重写,表示/api开头的就是代理到target,即http://xxxx:8002/Home
}
}
},
historyApiFallback:true
},
ngix方向配置代理(我没用过)
nginx是静态服务器,跨域请求放在api下面好管理http://www.baidu.com:80/api/user
可以在nginx下面的config下面的nginx.conf里面配置
从80端口进来的就拦截一下,代理到81端口
server{
location /api {
//拦截一下
proxy_pass http://www.baidu.com:81;
}
}