如何从其他域获取ajax响应?

时间:2012-06-30 23:50:00

标签: javascript ajax http cross-domain yql

除了YQL之外,有没有办法在不修改服务器端代码的情况下从其他域获取ajax的响应和数据?

YQL对免费用户有限制(每小时1000个电话),但大多数人说它实际上更少。

3 个答案:

答案 0 :(得分:3)

如果你的意思是“而不修改服务器端的代码”没有修改数据源的服务器,那么你可以拥有自己的代理服务器(基本上是你自己的YQL服务器)来读取远程数据。这是可能的,因为服务器端未绑定到同源策略。

因此,您可以使用AJAX服务器,然后让服务器使用某种形式的wgetcurlfopen来读取远程服务器,并返回检索到的内容:

Remote server <- fopen, curl or wget -> your server <- AJAX -> browser

答案 1 :(得分:1)

您可以使用iframe接收器模式。这是一项古老的技术。请参阅MSDN上的Danny Thorpe撰写的Secure Cross-Domain Communication in the Browser。您不必使用JSONP,但仍可以进行跨域调用

答案 2 :(得分:1)

您可以使用postMessage的HTML 5功能进行跨域调用。并非所有浏览器都支持它。请查看以下实施链接: Cross domain call using postMessage