前段跨域问题

【1】 什么是跨域?是基于浏览器安全的同源策略(协议 域名端口一致叫同源策略)
【2】跨域有哪几种方式
JSONP 通过回调函数来进行跨域获取最终的值 JSONP的优缺点
JSONP的优点是:它不像XMLHttpRequest对象实现的Ajax请求那样受到同源策略的限制;它的兼容性更好,在更加古老的浏览器中都可以运行,不需要XMLHttpRequest或ActiveX的支持;并且在请求完毕后可以通过调用callback的方式回传结果。
JSONP的缺点则是不能解决不同域的两个页面之间如何进行JavaScript调用的问题。

CORS 通过服务端设置 HEADER 头来设置允许的域名来进行跨域,现代浏览器常用,
IFrame 来进行跨域,通信可以用 postMessage;服务端代理来进行跨域,跨域的服务器不受控制。
修改document.domain的方法只适用于不同子域的框架间的交互。
通过location.hash跨域
【3】跨域的几种状态什么情况下才使用跨域?
URL 说明 是否允许通信
http://www.a.com/a.js
http://www.a.com/b.js 同一域名下 允许

http://www.a.com/lab/a.js
http://www.a.com/script/b.js 同一域名下不同文件夹 允许

http://www.a.com:8000/a.js
http://www.a.com/b.js 同一域名,不同端口 不允许

http://www.a.com/a.js
https://www.a.com/b.js 同一域名,不同协议 不允许

http://www.a.com/a.js
http://70.32.92.74/b.js 域名和域名对应ip 不允许

http://www.a.com/a.js
http://script.a.com/b.js 主域相同,子域不同 不允许(cookie这种情况下也不允许访问)

http://www.a.com/a.js
http://a.com/b.js 同一域名,不同二级域名(同上) 不允许(cookie这种情况下也不允许访问)

http://www.cnblogs.com/a.js
http://www.a.com/b.js 不同域名 不允许

猜你喜欢

转载自blog.csdn.net/qq_40774113/article/details/81366191