web-dev-qa-db-ja.com

jQuery JSONP ajax、認証ヘッダーが設定されていません

次の設定を使用して、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);
  }
});

しかし、認証ヘッダーは設定されていないようです。何か案は?

The request

24
David Tuite

最近同じ問題がありました。これを試して:

$.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ヘッダーの変更

25
Andrew Church

クロスドメインリクエストで認証が必要な場合、何らかのプロキシサーバーを使用する必要があります。

dataType: jsonpは、DOMに追加されるスクリプトから実際に作成されるHTTPリクエストになります。ヘッダーは$.ajaxは使用されません。

3
Dangladesh

OAUTH2 RESTリソースのほとんどは、リクエストURLの一部としてaccess_tokenパラメーターを受け入れるようです

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