浏览器的加载引擎出于对安全的考虑,加载资源的同时需要遵循同源策略,即XmlHttpRequest 只允许请求发(协议、域名、端口号、) 在当前源的资源,但是在实际开发中,数据或文档结构可能需要来源于不同的服务器。在后台没有解决跨越的情况下,前端跨域问题由此产生,以下列举出前端常用的跨域手段:
JSONP:原理是动态插入script标签引入一个带回调函数的Js文件,这个js文件载入成功后会执行该文件所请求的地址,并且把我们需要的JSON做参数传入,在回调函数中我们就可以获得所请求到的数据。
兼容性好, 支持浏览器与服务器双向通信。只支持GET请求cors:该方法主要作用服务端,设置Access-Control-Allow-Origin来进行,就可以通过Ajax实现跨域访问了。
document.domain:来跨域,通过document.domain来设置为同一个主域,前提是基础域名、端口号要一致
window.name:即在一个窗口的生命周期内,窗口载入的所有页面都是共享同一个Window.name,每个页面都对Window.name是持久存在的。
iframe:该技术为H5的新技术,低版本的浏览器可能不支持该方法,或者会有卡顿的情况,原理是通过在文档中创建一个iframe的标签,将要请求的资源路径赋值到该标签的src的属性中, 可以实现父子页面或者兄弟页面的传值,实现跨域的效果,前提是基础域名、端口号要一致。