1⃣️: 因为同源策略限制,不同源会造成跨域;
2⃣️: 以下任意一种情况不同都是不同源:
协议不同: http://
子域名不同:www
主域名不同:baidu.com
端口号不同:8080
ip地址和网址不同:www.baidu.com
3⃣️: 跨域解决方法:
1、jsonp
只能解决get跨域
1.1 jsonp解决跨域的原理是什么?
原理:
其本质是利用了标签具有可跨域的特性,由服务端返回预先定义好的javascript函数的调用,并且将服务端数据以该函数参数的形式传递过来
动态创建一个script标签,利用script标签的src属性不受同源策略限制;
因为所有的src属性和href属性都不受同源策略的限制,可以请求第三方服务器数据内容;
步鄹:
1、 创建一个script标签;
2、script的src属性设置接口地址;
3、接口参数必须带一个自定义函数名,要不然后台无法返回数据;
4、通过定义函数名去接受后台返回的数据;
2、cors跨域资源共享:
原理:服务器设置Access-Control-Allow-OriginHTTP响应头之后,浏览器将会允许跨域请求;
限制:浏览器需要支持html5,可以支持post、put等方法兼容IE9 以上
3、设置document.domain
原理:相同主域名不同子域名下的页面,可以设置document.domain让他们同域
限制:同域document提供的是页面间的相互操作,需要载入iframe页面;
4、用Apache做转发(逆向代理),让跨域变成同域