jQuery JSONP ajax,未设置身份validation标头

我正在尝试使用以下设置向google contacts API发出ajax请求:

$.ajax({ url: "https://www-opensocial.googleusercontent.com/api/people/@me/@all", dataType: 'jsonp', data: { alt: 'json-in-script' }, headers: { 'Authorization': 'Bearer ' + token }, success: function(data, status) { return console.log("The returned data", data); } }); 

但是身份validation标头似乎没有设置。 有任何想法吗?

请求

我最近遇到了同样的问题。 试试这个:

 $.ajax({ url: "https://www-opensocial.googleusercontent.com/api/people/@me/@all", dataType: 'jsonp', data: { alt: 'json-in-script' }, success: function(data, status) { return console.log("The returned data", data); }, beforeSend: function(xhr, settings) { xhr.setRequestHeader('Authorization','Bearer ' + token); } }); 

编辑:看起来无法用JSONP完成。 修改JSONP请求的HTTP标头

在跨域请求中需要身份validation时,您必须使用某种代理服务器。

由于使用dataType: jsonp导致实际从添加到DOM的脚本生成HTTP请求,因此不会使用$.ajax设置的标头。

似乎大多数OAUTH2 REST资源都接受access_token参数作为请求url的一部分

http://self-issued.info/docs/draft-ietf-oauth-v2-bearer.html#query-param

请尝试以下代码:

 $.ajax({ dataType: 'jsonp', url: url, data: { 'access_token':token.access_token }, jsonpCallback: 'thecallback', success: function(data){ _cb(data); }, error: function(d){ _cb(d); } }); 

只是这样做(jquery 2.0,但应该在以前的版本中工作)

  $.ajax({ url: "/test", headers: {"Authorization": "Bearer " + $('#myToken').val()} }) .done(function (data) { console.log(data); }) .fail(function (jqXHR, textStatus) { alert("error: " + textStatus); });