AJAX阻塞及跨域名解析 AJAX(Asynchronous JavaScript and XML)是一种非常流行的Web开发技术,但是它也存在一些问题,其中之一就是阻塞和跨域名访问问题。在本文中,我们将讨论AJAX的阻塞原因和跨域名解决方案。 AJAX阻塞的原因 当我们在页面中使用AJAX时,会出现阻塞现象。我们可以通过一个简单的示例来证实这一点。假设我们有一个函数simpleRequest,它发送一个POST请求到Server端。然后,我们可以创建一个函数threeRequests,它连续调用三个simpleRequest函数。通过统计图表,我们可以看到,每个请求需要花费1.5秒的时间,并且第三个请求必须等到第一个请求结束之后才能执行。因此,总共需要进行3秒多钟才能执行完毕。 传统的跨域名异步请求解决方案 AJAX安全性的唯一保证,就是对于跨域名(Cross-Domain)AJAX请求的限制。除非打开本地硬盘的网页,或者在IE中将跨域名传输数据的限制打开,否则向其他域名发出AJAX请求都会被禁止。对于跨域名的判断非常严格,不同的子域名,或者相同域名的不同端口,都会被认作是不同的域名,我们不能向它们的资源发出AJAX请求。 使用iframe解决跨域名问题 幸运的是,我们可以使用iframe来解决跨域名问题。iframe虽然不在标准中出现,但是由于它实在有用,FireFox也“不得不”对它进行了支持。我们可以在另一个域名下放置一个特定的页面文件作为Proxy,主页面将异步请求的信息通过Query String传递入iframe里的Proxy页面,Proxy页面在AJAX请求执行完毕后将结果放在自己location的hash中,而主页面会对iframe的src的hash值进行轮询,一旦发现它出现了改变,则通过hash值得到需要的信息。 优雅地突破子域名限制 我们可以使用iframe来突破子域名限制。我们可以在不同子域名的页面发起不同的请求,把结果通过JavaScript进行传递即可。唯一需要的也仅仅是一个简单的静态页面作为Proxy而已。 实际实现 我们可以编写一个静态页面,作为放在iframe里的Proxy,然后我们可以编写我们的主页面。在主页面中,我们可以使用JavaScript来访问iframe里的页面对象,例如window和DOM结构,包括调用JavaScript(通过window对象)。我们可以通过将内外页面的document.domain设为相同来实现跨子域名的访问。 AJAX阻塞和跨域名问题是非常重要的课题,我们可以使用iframe来解决跨域名问题,并且可以使用JavaScript来实现跨子域名的访问。本文只是简单地介绍了AJAX阻塞和跨域名问题的解决方案,希望能够对读者有所帮助。
- 粉丝: 0
- 资源: 2
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助