如何规避第三方https网站的同源政策?

时间:2011-10-06 21:38:48

标签: javascript same-origin-policy

我有一个http://网站,需要访问在https://网站上公开的第三方JSON API。我已阅读Ways to circumvent the same-origin policy,但似乎那里描述的方法不适合我:

  1. document.domain方法 - 仅适用于子域。
  2. 跨源资源共享方法 - 需要服务器合作。
  3. window.postMessage方法 - 似乎需要打开一个弹出窗口?
  4. 反向代理方法 - 一种可能的解决方案,但似乎有点难以设置。
  5. http://anyorigin.com - 似乎不支持SSL。
  6. 这是吗?我必须实施解决方案4,这似乎相当复杂,或者我错过了什么?

3 个答案:

答案 0 :(得分:12)

很抱歉,似乎anyorigin.com 支持支持https。

我天真地认为它没有的原因是因为API in question返回JSON,我认为我实际上只会得到一个纯文本响应(就像我在google.com上使用anyorigin.com的测试一样) )。当它只返回object时,我发现有些东西被打破了。

看来对象只返回解析后的JSON,所以我很高兴去!

更新 - anyorigin.com在发布此内容几周后停止使用某些https网站,因此我继续编写whateverorigin.org,这是anyorigin的开源替代方案。

答案 1 :(得分:3)

您可以使用Ajax-cross-origin jQuery插件。使用此插件,您可以使用jQuery.ajax()跨域。

使用起来非常简单:

    $.ajax({
        crossOrigin: true,
        url: url,
        success: function(data) {
            console.log(data);
        }
    });

您可以在此处阅读更多内容:http://www.ajax-cross-origin.com/

答案 2 :(得分:0)

JSONP应该在您的列表中,并且更高。几乎是标准。它需要服务器合作,但大多数API都应该知道他们正在做什么并支持它。

here是一个关于它如何工作的真正基本的写作