我发现真正令人困惑的是,为什么 AJAX 请求仅限于同一个域?这背后的原因是什么?
我认为从外部位置请求文件没有任何问题,发出 XMLHTTP 请求的服务器似乎也可以很好地获取并发布到外部位置。
我发现真正令人困惑的是,为什么 AJAX 请求仅限于同一个域?这背后的原因是什么?
我认为从外部位置请求文件没有任何问题,发出 XMLHTTP 请求的服务器似乎也可以很好地获取并发布到外部位置。
图片如下:
你来我的神话般的网站 www.halfnakedgirls.com。看着看起来像是关于人体生理学的技术文档,您会很开心,但在您背后,一些 JavaScript 行正在执行对另一个域的某些请求,比如说 www.yourpaypallike.com。
http://www.yourpaypallike.com/account/transfer?to=badguy@evilwebsite.com&amount=984654
像或的请求http://www.mymailprovider.com/mails/export?format=csv
。
你现在明白为什么它被禁止了吗?=)
汤姆,它不是“Ajax 请求限制”。AJAX 基于 JavaScript。出于安全原因,禁止跨域访问 JavaScript。如果你真的想做跨域 Ajax,你可以做一个 hack。
YourPage(Ajax) ----> YourServer ----> ExternalDomain
您可以使用 Ajax 调用服务器中的页面,您的域将使用服务器端调用外部域,并获取结果然后作为 Ajax 响应返回给您。当然,对 ExternalDomain 服务器的请求将被调用,而不会发送驻留在浏览器内存中的 ExternalDomain cookie。那是因为请求是由您的服务器而不是您的浏览器完成的。
这是出于安全目的 - 如果一个网站可以在客户端对他们想要的任何域执行 AJAX 调用,这会带来严重的风险。
不过有一些方法可以解决这个问题——你可以让你的 AJAX 在同一个域上调用一个 PHP 脚本,而后者又可以从另一个域调用一个脚本并返回它。不过,这不会使用浏览器作为通信媒介,而是使用您的网络服务器。
这里有一些信息可以满足您的问题: http ://en.wikipedia.org/wiki/Same_origin_policy