什么是跨域:
由于浏览器同源策略,凡是发送请求url的协议、域名、端口三者之间任意一与当前页面地址不同即为跨域。存在跨域的情况: 1.网络协议不同,如http协议访问https协议。 2.端口不同,如80端口访问8080端口。 3.域名不同,如qianduanblog.com访问baidu.com。 4.子域名不同,如abc.qianduanblog.com访问def.qianduanblog.com。 5.域名和域名对应ip,如www.bb.com访问8.8.8.8.
怎么解决跨域:
1.JSONP:
只支持GET请求,不支持POST请求。
JSONP原理:
ajax请求受同源策略影响,不允许进行跨域请求,而script标签src属性中的链接却可以访问跨域的js脚本,利用这个特性,服务端不再返回JSON格式的数据,而是返回一段调用某个函数的js代码,在src中进行了调用,这样实现了跨域。
2.代理请求:
写在vue项目的vue.config.js中
devServer:{
proxy:{
"/api":{
target: ""https: //www.xujingye.top:8060", // 要代理的地址
ws: false,
changeOrigin: true, //开启代理:在本地会创建一个虚拟服务端,然后发送请求的数据,并同时接收请求
pathRewrite:{ //重写匹配的字段,如果不需要在请求路径上,重写为""
"^/api":""
}
}
}
}