2012-01-24 14 views
1

私はFacebookのグラフへのアクセスに問題があります。私はGreasemonkeyスクリプトを使用しています。私がクロムのTampermonkeyで同じスクリプトを使用するとうまく動作し、データを取得できます。XMLHttpRequestアクセスfacebookの開発者とグラフ

Firefoxでは何も起こりません。ドメイン間の制限が原因である可能性があります。私は正しいです、そして、これが解決できる方法はありますか?

私がgraph.facebook.comにいる場合、Firefoxで言及するのは忘れてしまいます。

編集:

var my_id = 1111111111; 
var req = new XMLHttpRequest(); 
req.open('GET', 'https://graph.facebook.com/'+my_id, false); 
req.send(); 
var contents = req.responseText; 
alert(contents); 

答えて

0

XMLHttpRequestは、ドメイン間の要求をサポートしていません。 (あなたはこれはしかしTampermonkeyに働くと言う??!?Tampermonkeyはそれがかもしれないは多分、XMLHttpRequest()をクロスドメインXHRを高めています。GM_xmlhttpRequest()をサポートしています)

をそれにもかかわらず、これはGreasemonkeyの(とChromeで動作するように取得するにはuserscripts、Tampermonkey)を使用するには、GM_xmlhttpRequest()を使用する必要があります。これによりドメイン間の要求が可能になります。

そこで質問からのコードはなる:

var my_id = 1111111111; 

GM_xmlhttpRequest ({ 
    method:   'GET', 
    url:   'https://graph.facebook.com/' + my_id, 
    onload:   function (responseDetails) { 
         var contents = responseDetails.responseText; 
         alert (contents); 
        } 
}); 


GM_xmlhttpRequest()は非同期に動作すること。 (これは幾分dicey同期モードを有しているが、それは推奨されない。)

+0

ありがとうございます!これは完璧に動作します! – user1165862

+0

はい、それは私が言ったように、私を混乱させるものでした! – user1165862

+0

もう1つ「すばやい」質問:関数の外で可変内容を使用するにはどうすればよいですか?私はvar my_idを鳴らして定義しようとしましたが、うまくいきません。 – user1165862

0

あなたが情報を投稿するためにはXMLHttpRequestを使用している場合、これは同一生成元ポリシー(MDNWikipedia)によって引き起こされる可能性が高いです。

あなたが情報を送信している場所の1)プロトコル(http)2)ドメインと3)ポートと一致しない場合、Firefoxなどがそのリクエストをブロックする可能性があります。 (これは、graph.facebook.comにいるときにのみ機能します)

Facebookはあなたのためにcross origin resource sharingをサポートする可能性は低いので、おそらく運が悪いです。

Cookieとその他の「周囲認証」がPOSTリクエストとともに送信されるため、ブラウザがこの種のポリシーを実施する理由は、ブックマークレットまたはGreasemonkeyスクリプトが、ドメインの背後にあるサーバーにCookieを送信できないようにするためですそれらをあなたに。

+0

[OK]を、どのようにそれがChromeで動作しますか? – user1165862

+0

あなたはPOSTではなくGETを使っているようですが、ルールは異なり、同じSOPポリシーの対象ではありません。 – buley

+0

私はGETを使用しています。これは問題の例と同じです。そのコードはChromeでは動作しますが、Firefoxでは動作しません...それが私を混乱させます。 – user1165862

0

私はしようとしたときに、私はステータス200を戻し、ヘッダが使用Access-Control-Allow-Origin:* *

を有し、それをGET-INGのためCORSを許可ない観察Facebook Graphに基づいFirebugは:

要求:

xhr=new XMLHttpRequest(); 
xhr.open('get','https://graph.facebook.com/id',true); 
xhr.send(); 

ヘッダ:

Response Headers 
Access-Control-Allow-Origin * 
Cache-Control private, no-cache, no-store, must-revalidate 
Connection keep-alive 
Content-Length 181 
Content-Type text/javascript; charset=UTF-8 
Date Tue, 19 Jun 2012 22:41:46 GMT 
Etag "some random string" 
Expires Sat, 01 Jan 2000 00:00:00 GMT 
Pragma no-cache 
X-FB-Debug some random string 
X-FB-Rev some random number 

Request Headers 
Accept text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8 
Accept-Charset ISO-8859-1,utf-8;q=0.7,*;q=0.7 
Accept-Encoding gzip, deflate 
Accept-Language en-us,en;q=0.5 
Connection keep-alive 
DNT 1 
Host graph.facebook.com 
Origin http://localhost:8080 
Referer http://localhost:8080/login 
User-Agent Mozilla/5.0 (X11; Linux x86_64; rv:7.0.1) Gecko/20100101 Firefox/7.0.1 
関連する問題