在我们参加前端培训学习的时候一定会讲到JS相关的知识,那么我们一定会学习到里边的js跨域访问的知识,这是一个比较现实也是很实际的一个问题,这个问题除了参加前端培训会讲到,在实际工作中也会涉及。
那么如何去解决JS跨域问题?怎么在前端培训班学好前端呢?JavaScript跨域是指通过JS在不同的域之间进行数据传输或通信,比如用ajax向一个不同的域请求数据,或者通过JS获取页面中不同域的框架中(iframe)的数据。
在此之前,我们首先要了解为什么需要跨域。当协议、主域名、子域名、端口号中任意一个不相同时都不算同一个域,而在不同域之间请求数据即为跨域请求。简单来说,跨域的作用就是让你能访问不是一个域的文件。
要解决跨域问题,我们可以使用以下几种方法:
一、通过jsonp跨域(实际上是动态创建script标签)
jsonp(json with Padding)是资料格式json的一种“使用模式”,可以让网页从别的网域要资料。jsonp也叫填充式json,是应用json的一种新方法,只不过是被包含在函数调用中的json。
二、通过document.domain+ iframe (只有在主域相同的时候才能使用该方法)
两个不同域的a.html和b.html
解决办法:在两个页面都插入document.domain,这样就能访问iframe里window对象的各种属性。
三、使用window.name来进行跨域
原理:在一个窗口(window)的生命周期内,窗口载入的所有的页面都是共享一个window.name的,每个页面对window.name都有读写的权限
四、使用HTML5的window.postMessage方法来跨域传送数据
五、利用CORS
CORS是自定义HTTP头部,使浏览器和服务器对比,从而决定请求和响应是否应该进行。
IE8使用XDR对象实现CORS,和XHR类似用法
现代浏览器使用普通的XMLHttpRequest对象请求就行。
当然,实现JavaScript跨域的方法还有图片Ping、利用flash等。跨域是前端最重要的面试题之一,掌握它你就比别人多了一个优势。
所以,大家在参加前端培训学习中一定要多加注重js跨越的问题,对于那些没有参加前端培训自学的同学也一定要注意一下这方面的知识点。最后希望可以帮助到大家。