2011-09-15 10 views
18

que estoy tratando de hacer una petición AJAX a la API de contactos de Google con la siguiente configuración:jQuery JSONP ajax, cabecera de autenticación no está estableciendo

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

Pero no parece para ponerse en la cabecera de autenticación. ¿Algunas ideas?

The request

+0

¿Qué versión de jQuery ¿Estas usando? – Joe

+0

jQuery .ajax tiene campos de 'nombre de usuario' y 'contraseña' que harán la autenticación básica para usted si es necesario –

Respuesta

23

que tenían el mismo problema recientemente. Pruebe esto:

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

EDITAR: Parece que no se puede hacer con JSONP. Modify HTTP Headers for a JSONP request

+0

'xhr.setRequestHeader' tampoco funciona. Parece que necesito leer la pregunta a la que vinculó. –

+0

Funciona perfectamente para mí. Gracias Andrew. –

-1

a hacer esto (jQuery 2.0, pero debería funcionar en las versiones anteriores)

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

Bien, pero esta no es la solicitud de JSONP ajax. Esta es una simple solicitud ajax. –

+0

la opción 'headers' debe ser válida incluso si es JSONP. Los encabezados de solicitud son parte del protocolo HTTP, JSONP es un truco de nivel de aplicación/navegador. – rynop

2

Cuando se necesita la autenticación en una solicitud de dominios, debe utilizar un servidor proxy de algún tipo.

Dado que el uso de dataType: jsonp hace que la solicitud HTTP realmente se realice a partir de la secuencia de comandos que se agrega al DOM, no se usarán los encabezados establecidos en $.ajax.

0

Is parece que la mayoría de los recursos OAuth2 REST aceptar el parámetro señal_acceso como parte de la solicitud de URL

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

favor, intente el siguiente código en su lugar:

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