2012-04-08 293 views
3

以下代碼在Chrome,Firefox和Komodo Dragon中正常工作。即使是一個乾淨的Firefox安裝(證明我沒有通過FB或任何其他認證)。它在IE中不起作用。 Chrome,FF和龍都會產生有效access_token的警報。 IE導致「訪問被拒絕」。我試過GET和POST,兩者都有相同的結果。ajax調用在Chrome瀏覽器,Firefox但不在IE瀏覽器?

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瀏覽器拒絕嘗試。我相信這就是爲什麼:

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開頭。

這肯定是我們的意圖,以避免使 XDomainRequests基於HTTP的資源HTTPS網頁,該方案中提出了 混合內容安全威脅,許多開發者和用戶最 不明白。

但是,此限制過於寬泛,因爲它阻止HTTP 頁面發出以HTTPS頁面爲目標的XDomainRequest。雖然 確實HTTP頁面本身可能已被破壞,但沒有其它原因應該被禁止安全地接收公共資源 。

最糟糕的是,相同的方案限制意味着,Web開發人員 測試他們的網頁在本地使用file://模式會發現, 所有XDomainRequests的被阻止,因爲文件://不匹配 是http ://或https://,這是唯一有效的目標方案 (點#1)。要解決此問題,Web開發人員必須將其頁面 託管在本地Web服務器上(例如,IIS,託管的Visual Studio託管服務器等)。

要解決此限制,您可以構建一個 postMessage-Proxy-for-XDR。

我提供的託管軟件包不包含任何SSL選項。其他人有沒有其他想法?

+0

我認爲這可能是你的問題,現在我正在尋找更密切的:http://stackoverflow.com/questions/5087549/access-denied-to-jquery-script-on-ie – 2012-04-08 02:28:12

+0

這還沒有'工作,我會更新我的問題的理由。 – 2012-04-08 22:35:10

+0

你看過JSONP嗎?這超出了我的經驗範圍,但這看起來像另一種可能性:http:// stackoverflow。com/questions/4669781/howto-get-jsonp-and-facebook-graph-api-to-work – 2012-04-09 03:19:37

回答

1

答案是讓ajax調用服務器端服務,然後讓該服務進行OAuth調用。就我而言,我使用了一個asp.net ASMX服務。它也可以是PHP或任何東西。這現在正在工作。

相關問題