jQuery JSONP ajax, заголовок аутентификации не установлен - PullRequest
24 голосов
/ 15 сентября 2011

Я пытаюсь сделать ajax-запрос к API контактов Google со следующей настройкой:

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

Но заголовок Authentication, похоже, не настроен.Есть идеи?

The request

Ответы [ 4 ]

25 голосов
/ 15 сентября 2011

У меня недавно была такая же проблема. Попробуйте это:

$.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. Изменить заголовки HTTP для запроса JSONP

3 голосов
/ 10 июля 2014

Когда требуется аутентификация в междоменном запросе, вы должны использовать какой-либо прокси-сервер.

Поскольку использование dataType: jsonp приводит к фактическому выполнению HTTP-запроса из сценария, который добавляется в DOM, заголовки, установленные в $.ajax, не будут использоваться.

0 голосов
/ 07 сентября 2016

Похоже, что большинство ресурсов REST OAUTH2 принимают параметр 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);
            }
        });
0 голосов
/ 07 августа 2013

Просто сделайте это (jquery 2.0, но должно работать в предыдущих версиях)

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