代码之家  ›  专栏  ›  技术社区  ›  Jordan Parmer

为什么我在使用谷歌地图API时没有收到“同源策略”警告?

  •  43
  • Jordan Parmer  · 技术社区  · 17 年前

    “此页面正在访问不受其控制的信息。这会带来安全风险。是否继续?”

    现在我已经读过了,并且意识到 cross-domain, same origin policy

    我最初的猜测是谷歌是使用 <script> 标记,而我的REST消费正在使用XMLHttpRequest。如果是这样,这两种方法之间有什么区别,一种值得警告,另一种不值得警告?

    2 回复  |  直到 10 年前
        1
  •  7
  •   Michał Perłakowski    10 年前

    下面可以解释一些事情: http://markmail.org/message/5wrphjwmo365pajy

    此外,他们还采用了一些脚本黑客(例如,将脚本插入DOM以获取请求的数据,而不是XHR)。

        2
  •  1
  •   Jordan Parmer    10 年前

    here .

    本质上,通过页面注入代码 <script> 在导入JavaScript时标记。通过此标记导入的任何内容都会立即在全局上下文中执行。因此,与其传入JavaScript文件,不如传入一个URL到一个网站,该网站返回的页面不是HTML标记,而是返回JavaScript代码文本的页面,该文本在代码中调用回调。

    您可以使用URL参数告诉页面返回什么“回调”,以及需要进入回调的任何参数。例如:

    <script type="text/javascript" src="http://crossdomainhost/CrossDomainConsumerSite/Default.aspx?callback=myCallback&param1=myParam"></script>
    

    myCallback( myParam );
    

    在服务器端,您将在该URL上创建一个站点,该站点将覆盖OnLoad等价物(使用您正在使用的任何服务器端语言)。而不是页面HTML,OnLoad将获取URL参数并重新旋转它们以匹配上面的回调调用。

    进行替换时,当客户端加载页面时,将立即调用回调。这样做的好处是“src”URL不必与托管页面的域匹配。

    <script type="text/javascript">
        var myCallback = function( myParam ) {
            alert( "this was called across domains!" );
        };
    </script>
    <script type="text/javascript" src="http://crossdomainhost/CrossDomainConsumerSite/Default.aspx?callback=myCallback&param=myParam></script>