代码之家  ›  专栏  ›  技术社区  ›  tkotitan

如何将jQueryAjax用于外部域?

  •  2
  • tkotitan  · 技术社区  · 15 年前

    我正在尝试使用.get()或.post()执行一个简单的jQuery AJAX尝试。

    如果我的服务器上有本地副本,并执行以下操作:

    $.get('/hash.php',...,...)
    

    我在firebug的控制台中监视get是否完成,并得到响应。

    $.get('https://secure.mysite.com/subdir/hash.php',...,...)
    

    如果我去掉“s”或改用post,则没有帮助。我是否缺少一些应该在jQuery中使用的参数?

    编辑:我忘了提到我这样做的原因是因为我最终将从PHP4站点迁移到PHP5站点,但目前,实时PHP4站点需要一个PHP4中没有的功能。所以我打电话给PHP5服务器来做这件事。我想我有一个很好的解决办法。谢谢

    5 回复  |  直到 15 年前
        1
  •  3
  •   Pascal MARTIN    15 年前

    您不能将Ajax请求发送到部署应用程序的另一个域之外的另一个域。这是因为 Same Origin Policy 在web浏览器中实现——一种安全措施。

    • 将请求发送到您自己的服务器,该服务器将充当另一个服务器的代理(通过PHP脚本,或者更好地使用一些Apache的 mod_proxy_http 模块)
    • <script> 标签——不受SOP约束的标签。
        2
  •  3
  •   googletorp    15 年前

    的确,由于浏览器的原因,您通常无法在域外执行Ajax。然而,使用JSONP可以做到这一点。jQuery现在也有一个用于Ajax的jsonp参数。但是,要实现这一点,您需要控制服务器的输出。

        3
  •  1
  •   James Black    15 年前

    这是一个安全特性。

    根据您希望获得的特定于浏览器的内容,您可能会绕过这一点,但这会有点滑倒。

        4
  •  1
  •   AdamW    15 年前

    您不能直接执行跨域ajax请求,这将是一个安全问题。

        5
  •  1
  •   Community CDub    7 年前