【- Ajax -】如何理解Ajax跨域调用

“对于JavaScript领域而言,最重要的安全限制是同源策略(same origin policy),它用来决定服务器能够相互通信的页面。

通常源(orgin)是指诸如www.csdn.net的单个域,它可以通过单个协议访问,通常是HTTP。同源策略规定只有同源的页面才能访问、下载、以及与来自该源的资源进行交互(使用Javascirpt)。对于隐藏帧技术而言,这要求所有的帧都是从相同的源装载的,因此可以使用JavaScript来通信。如果您尝试在帧中装载来自于其他源的页面,就不能与这个页面进行交互或者访问其中任何脚本。同源策略的意图是防止恶意程序员在合法的网页之外获取你的消息。

同源策略对于XMLHttp的工作也是有影响的。使用XMLHttp就不能访问与运行该代码的页面不同的资源。这就意味着,默认情况下是不能够在open()方法中使用以http://开头的URL,只能够使用同一域名中的绝对URL或者相对URL。如果你需要访问一个位于不同源中URL,就必须创建一个服务器端代理来处理这个通信。”

 iE并未提供一个显示的同源策略,而是依赖于其自己的安全区域来决定能够访问什么,属于internet安全区域的那些页面通常遵循的规则与同源策略相似,而属于受信任站点区域的页面则会免受该策略的限制。

 

 以上是Ajax高级程序设计中的描述。那么我们如何来理解这段话呢?

【实际项目】假设两台机器:机器1和机器2,1机器上部署了应用A,2机器上部署了应用B,A中的页面需要调用B中的页面,项目中发现A中的Javascript代码不能访问B的页面中的内容,这是因为Javascript的跨域限制,但是可以通过XMLhttp发送请求给B,会收到B返回的响应消息。这个不受跨域限制的影响(因为B的Web服务器充当了代理的角色)。

欢迎大家留言讨论Ajax跨域问题~

你可能感兴趣的:(【- Ajax -】如何理解Ajax跨域调用)