【问题标题】:How can i get around the same origin policy?我怎样才能绕过相同的原产地政策?
【发布时间】:2009-11-28 03:57:24
【问题描述】:

我需要使用 AJAX 来获取位于与加载 AJAX 的服务器不同的服务器上的另一个页面的内容。 AJAX 需要发送一个 POST 请求然后返回结果。我该怎么做?

【问题讨论】:

    标签: javascript ajax


    【解决方案1】:

    在您自己的服务器上设置代理。让您的服务器调用他们的服务器并返回结果。

    【讨论】:

    • 我不能。我的服务器只允许我使用 GET 请求外部网页。
    【解决方案2】:

    如果您控制两台服务器,则可以使用cross-origin resource sharing 的 HTTP 标头字段之一:

    http://www.petefreitag.com/item/703.cfm

    https://developer.mozilla.org/En/HTTP_access_control

    【讨论】:

    • 浏览器是否支持 Access-Control-Allow-Origin 标头?
    【解决方案3】:

    没有办法绕过该政策。这项政策有很好的理由。 只要您可以控制 Web 应用程序,这也没有问题。您可以简单地将呼叫从您的网络服务器重定向到另一台服务器并传递结果。这就像代理一样。

    【讨论】:

      【解决方案4】:

      如果您想在客户端和跨浏览器上执行此操作,则需要其他服务器的配合。

      通过:

      1) 使用 JSONP(注入带有回调函数的脚本标签)
      不过,只有 GET 调用是可能的。
      安全性是一个问题,因为脚本可以访问该页面中的所有资源(数据、cookie、...)。
      这里有一篇文章解释了如何 sandbox them 并确保页面中的数据安全。

      2) POST 看起来可以使用 Kris Zip 的window.name technique

      如果无法与其他服务器合作,据我所知,其他答案中描述的服务器代理是唯一的选择。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2018-01-11
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2012-04-02
        • 1970-01-01
        相关资源
        最近更新 更多