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); });