尝试使用 CORS 访问谷歌通讯录 API 请求的资源上不存在 'Access-Control-Allow-Origin' 标头



我正在尝试使用cors从谷歌联系人api访问数据。

我可以在auth 2.0操场上做到这一点,但当我尝试从我的应用程序中做到这一点时,它会在Google chrome的控制台中给出以下错误消息。

405方法不允许在请求的资源上没有'Access-Control-Allow-Origin'标头。

下面是我的代码:
 <button id="authorize-button" style="visibility: hidden">Authorize</button>
 <script  type="text/javascript"> 
   var clientId = 'xxxxxxxx'; 
   var apiKey = 'xxxxxxxxx'; 
   var scopes = 'https://www.google.com/m8/feeds';
  //var scopes = 'https://www.googleapis.com/auth/calendar';
  function handleClientLoad() 
  {
    gapi.client.setApiKey(apiKey);
    window.setTimeout(checkAuth,1);
  }
  function checkAuth() 
  {
    gapi.auth.authorize({client_id: clientId,
    scope: scopes, immediate: true},      handleAuthResult);
  }
  function handleAuthResult(authResult) 
  {
    var authorizeButton = document.getElementById('authorize-button');
    console.log(authResult);
    if (authResult && !authResult.error) 
    {
        authorizeButton.style.visibility = 'hidden';          
        var xhr = new XMLHttpRequest();
        xhr.open("GET", "https://www.google.com/m8/feeds/contacts/default/full");
        var oauthToken = gapi.auth.getToken();
        xhr.setRequestHeader('Authorization', 'Bearer ' + oauthToken.access_token);
        xhr.send();    
    } 
    else 
    {
        authorizeButton.style.visibility = '';
        authorizeButton.onclick = handleAuthClick;
    }
  }
  function handleAuthClick(event) 
  {
    gapi.auth.authorize({client_id: clientId, 
    scope: scopes, immediate: false}, handleAuthResult);
    return false;
  }   
 </script>
 <script src="https://apis.google.com/js/client.js?onload=handleClientLoad"></script>

据我所知,我已经完成了在Google文档中记录的使用javascript进行cors请求的操作。

这些代码来自"如何使用CORS访问Google api"页面:

 {
  var xhr = new XMLHttpRequest();
  var oauthToken = gapi.auth.getToken();
  xhr.open('GET','https://www.googleapis.com/plus/v1/people/me/activities/public');
  xhr.setRequestHeader('Authorization','Bearer ' + oauthToken.access_token);
  xhr.send();
 }

还没有足够的分数来评论,因此我发布了一个答案。

问题似乎是Google服务器不能正确处理CORS,您只能使用JSONP来检索信息,参见这个类似的问题和答案。简而言之,域共享联系人API仅对JSONP get正确处理access-control-allow-origin

相关内容

  • 没有找到相关文章

最新更新