1

すべての Gmail 連絡先の写真画像を JavaScript から取得しようとしています。

https://code.google.com/p/google-api-javascript-client/ の使用

画像の URL に対して承認済みの AJAX GET リクエストを作成しようとすると、次のエラー メッセージが表示されます。

XMLHttpRequest を読み込めません。Access-Control-Allow-Origin でオリジンが許可されていません。

これが私がリクエストを行う方法です:

$.ajax({ url: "https://www.google.com/m8/feeds/photos/media/atameem%40spokeo.com/16e8f6a1892842c7", data: authParams, success: function(data) { console.log(data); } });

ブラウザのネットワーク タブに表示されるアクセス トークン付きの GET URL は次のとおりです。

https://www.google.com/m8/feeds/photos/media/atameem%40spokeo.com/16e8f6a1892842c7?state=&access_token=ya29.AHEGYGMYP-G_3FmAxzDuWD3a4j4_mBVY&token_type=ベアラー&expires_in=3600&alt=json

どんな助けでも大歓迎です!

ありがとう。

4

1 に答える 1

0

これは、リクエスト以外のドメインから ajax 呼び出しを実行しようとしたときに表示されるエラーです。クロスドメイン ajax 呼び出しを行って応答を取得することはできません。https://developer.mozilla.org/en-US/docs/HTTP/Access_control_CORSを参照してください。

ただし、Cross-Origin-Resource-Sharing (CORS) を許可するようにヘッダーを設定できます: http://en.wikipedia.org/wiki/Cross-Origin_Resource_Sharing

資格情報を介して任意のファイルをリクエストすることもできます。

$.ajaxSetup({
    type: "POST",
    data: {},
    dataType: 'json',
    xhrFields: {
       withCredentials: true
    },
    crossDomain: true
});

CORS は、最新の主要なブラウザーでサポートされています。次のコード スニペットで、ブラウザがサポートしているかどうかを確認できます。

//Detect browser support for CORS
if ('withCredentials' in new XMLHttpRequest()) {
    /* supports cross-domain requests */
    document.write("CORS supported (XHR)");
}
else{
  if(typeof XDomainRequest !== "undefined"){
     //Use IE-specific "CORS" code with XDR
     document.write("CORS supported (XDR)");
  }else{
     //Time to retreat with a fallback or polyfill
     document.write("No CORS Support!");
  }
} 
于 2013-02-08T12:47:16.843 に答える