代码之家  ›  专栏  ›  技术社区  ›  Chris Stewart

跨域进行JavaScript调用

  •  1
  • Chris Stewart  · 技术社区  · 14 年前

    目标如下:

    我试图用两种方法来解决这个问题:

    首先,我尝试在JavaScript中使用XMLHttpRequest来调用这个远程服务器。在IE中,它将按预期工作,但FF、Safari和Chrome将返回空响应。我从研究中得到的总体反应是,请求被阻止,因为它试图访问的服务器与它运行的位置不同(都是localhost,但端口不同)。

    对我该怎么做有什么建议吗?

    <script src="http://www.gmodules.com/ig/ifr?url=http://ralph.feedback.googlepages.com/googlecalendarviewer.xml&amp;synd=open&amp;w=320&amp;h=200&amp;title=&amp;border=%23ffffff%7C3px%2C1px+solid+%23999999&amp;output=js"></script>
    
    2 回复  |  直到 14 年前
        1
  •  2
  •   Nikita Rybak    14 年前

    JSONP 是一种很常见的处理方法 same origin policy . 由于大多数javascript框架(例如jquery)已经支持它,所以使用它不必深入技术细节。
    script 来自javascript的标记(如您所述)。Google Analytics代码片段就是这种方法的一个例子:

          var ga = document.createElement('script');
          ga.type = 'text/javascript';
          ga.async = true;
          ga.src = 'url here';
          var s = document.getElementsByTagName('script')[0];
          s.parentNode.insertBefore(ga, s);
    

    iframe 元素来显示来自其他服务器的内容,但浏览器不允许您使用javascript从主页访问它。

    编辑
    此原始提案详细说明了JSONP的用法:
    http://bob.pythonmac.org/archives/2005/12/05/remote-json-jsonp/

        2
  •  1
  •   Vadim    14 年前

    在线上有很多实现,或者您可以用自己选择的语言编写一个,以适合您的堆栈。

    更多关于图形和PHP代理的信息,请点击这里- http://developer.yahoo.com/javascript/howto-proxy.html