1

我正在尝试从 javascript 中检索我所有 gmail 联系人的照片图像。

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

当我尝试向图像 url 发出授权的 AJAX GET 请求时,我收到以下错误消息:

XMLHttpRequest 无法加载。Access-Control-Allow-Origin 不允许 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=Bearer&expires_in=3600&alt=json

任何帮助将不胜感激!

谢谢。

4

1 回答 1

0

当您尝试从请求以外的其他域进行 ajax 调用时,会显示此错误。您不能进行跨域 ajax 调用来检索响应。请参阅:https ://developer.mozilla.org/en-US/docs/HTTP/Access_control_CORS 。

但是,您可以设置标题以允许跨域资源共享 (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 回答