Google的JavaScript API如何绕过AJAX中的跨域安全性

时间:2008-09-24 18:48:49

标签: google-api google-api-js-client google-ajax-api

Google的API如何在您的网站上向Google发送跨域请求?

5 个答案:

答案 0 :(得分:11)

他们通过动态地将脚本标签注入文档的头部来绕过它。通过此注入向下发送的javascript中有一个回调函数,它告诉脚本在页面中运行它已加载的有效负载(数据)。

然后,脚本可以删除动态注入的脚本标记并继续。

答案 1 :(得分:4)

接受的答案是错误的。本是对的。下面是使用Google API JavaScript Client拉出页面的实际iframe节点。

<iframe name="oauth2relay678" id="oauth2relay678" 
        src="https://accounts.google.com/o/oauth2/postmessageRelay?
             parent=https%3A%2F%2Fwww.example.com.au#rpctoken=12345&amp;forcesecure=1" 
             style="width: 1px; height: 1px; position: absolute; left: -100px;">
</iframe>

这是如何工作的基本摘要:http://ternarylabs.com/2011/03/27/secure-cross-domain-iframe-communication/。在现代浏览器中,他们使用HTML postMessage来实现通信,而在旧版浏览器中,他们使用整齐的多iframe-urlhash-read + write-combination hack。 Ternary Labs制作了一个library来抽象出所有hacky的东西,基本上在所有浏览器上都给你postMessage。

有一天,我将构建此库的顶部以简化跨域REST API ...

编辑:那天已经来了,XDomain就在这里 - https://github.com/jpillora/xdomain

答案 2 :(得分:1)

AFAIK他们使用IFRAME。

答案 3 :(得分:0)

另一种可能性是使用针对dojo框架所描述的window.name传输here

答案 4 :(得分:0)

Google似乎使用&lt; img&gt;显示地图标签 我猜他们使用JavaScrit库来计算src url需要的所有坐标和其他参数,然后插入&lt; img&gt;标签(以及一百万个其他标签)到您的DOM中。

完整地图由多个窗格构建,如下面的HTML:

&lt; img src =“https://mts1.google.com/vt/lyrs=m@248102691&hl=en&src=app&x=32741&s=&y=21991&z=16&& ; scale = 1.100000023841858&amp; s = Galile“class =”css-3d-layer“style =”position:absolute; left:573px; top:266px; width:128px; height:128px; border:0px; padding:0px;保证金:0px;“&gt;

(您可以将此HTML粘贴到您自己的网页上以查看结果)

因此,谷歌地图不会使用AJAX或任何东西来获取其动态创建的地图,只是普通图像。所以没有担心跨域问题......