Google的API如何在您的网站上向Google发送跨域请求?
答案 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&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或任何东西来获取其动态创建的地图,只是普通图像。所以没有担心跨域问题......