ajax调用适用于Chrome,Firefox但不适用于IE吗?

时间:2012-04-08 01:59:21

标签: jquery ajax internet-explorer facebook-graph-api

以下代码适用于Chrome,Firefox和Komodo Dragon。我甚至是一个干净的firefox安装(证明我没有经过FB或其他任何认证)。它在IE中不起作用。 Chrome,FF和Dragon都会生成带有有效access_token的警报。 IE导致“访问被拒绝”。我尝试过GET和POST,两者都有相同的结果。

    function getWallPosts() {
        $.ajax({
            url: 'https://graph.facebook.com/oauth/access_token?client_id=<facebookid>&client_secret=<secretcode>&grant_type=client_credentials',
            type: 'POST',
            success: function (data) {
                alert(data)
            },
            error: function (a, b, c) {
                alert(a + ' ' + b + ' ' + c);
            }
        });
    };

编辑:其他信息*

我尝试按照评论中的建议使用XDomainRequest,但我仍然只在IE中收到Access Denied。我相信这就是原因:

http://blogs.msdn.com/b/ieinternals/archive/2010/05/13/xdomainrequest-restrictions-limitations-and-workarounds.aspx

  

请求必须定位到与托管页面相同的方案

     

此限制意味着如果您的AJAX页面位于   http://example.com,那么您的目标网址也必须以HTTP开头。   同样,如果您的AJAX页面位于https://example.com,那么您的   目标网址也必须以HTTPS开头。

     

绝对是我们阻止HTTPS页面制作的意图   基于HTTP的资源的XDomainRequests,如该场景所示   混合内容安全威胁,许多开发人员和大多数用户都这样做   不明白。

     

但是,这种限制过于宽泛,因为它会阻止HTTP   发布针对HTTPS页面的XDomainRequests的页面。虽然它是   确实HTTP页面本身可能已被泄露,没有   因为应该禁止接收公共资源   安全

     

最糟糕的是,相同的方案限制意味着Web开发人员   使用file:// scheme在本地测试他们的页面会找到它   所有XDomainRequests都被阻止,因为file://不匹配   http://或https://,这是唯一有效的目标方案   (第1点)。要解决此问题,Web开发人员必须托管他们的   本地Web服务器上的页面(例如IIS,Visual Studio托管)   服务器等)。

     

要解决此限制,您可以构建一个   的postMessage-代理换XDR。

我提供的托管包不包含任何SSL选项。还有其他人有其他想法吗?

1 个答案:

答案 0 :(得分:1)

答案是对服务器端服务进行ajax调用,然后让该服务进行OAuth调用。在我的例子中,我使用了asp.net ASMX服务。它也可以是PHP或任何东西。现在正在运作。