2010-01-13 15 views

Respuesta

127

Se supone que la funcionalidad se rompe en jQuery 1.5.

Desde jQuery 1.5.1 debe usar xhrFields param.

$.ajaxSetup({ 
    type: "POST", 
    data: {}, 
    dataType: 'json', 
    xhrFields: { 
     withCredentials: true 
    }, 
    crossDomain: true 
}); 

Docs: http://api.jquery.com/jQuery.ajax/

errata: http://bugs.jquery.com/ticket/8146

+2

Ahora puedo enviar cookies al subdominio :) ¡Gracias! – Radek

+6

¿Se supone que esto también funciona para peticiones ajax cruzadas (sin subdominio)? – streetlight

+0

Eres increíble ... ¡gracias! – Titus

39

Puede usar la devolución de llamada beforeSend para establecer parámetros adicionales (El objeto XMLHTTPRequest se le pasa como su único parámetro).

Solo para que lo sepa, este tipo de solicitud entre dominios no funcionará en un escenario de sitio normal ni con ningún otro navegador. Ni siquiera sé qué limitaciones de seguridad FF 3.5 impone, así, sólo para que no golpearon la cabeza contra la pared por nada:

$.ajax({ 
    url: 'http://bar.other', 
    data: { whatever:'cool' }, 
    type: 'GET', 
    beforeSend: function(xhr){ 
     xhr.withCredentials = true; 
    } 
}); 

Una cosa más a tener cuidado de, es que está configurado para jQuery normalizar las diferencias del navegador. Puede encontrar que la biblioteca jQuery impone limitaciones adicionales que prohíben este tipo de funcionalidad.

+2

Según http: // api .jquery.com/jQuery.post/ debe ser tipo: "GET" y no método: 'GET' tropecé con él cuando se utiliza el ejemplo – Xosofox

+1

@Xosofox Sé que este es un comentario antiguo, pero a partir de jQuery 1.9, 'method: 'GET'' es compatible. http://api.jquery.com/jquery.ajax/ – Brad

0

En jQuery 3 y tal vez las versiones anteriores, la siguiente configuración más simple también funciona para las solicitudes individuales:

$.ajax(
     'https://foo.bar.com, 
     { 
      dataType: 'json', 
      xhrFields: { 
       withCredentials: true 
      }, 
      success: successFunc 
     } 
    ); 

El error total Me encontraba en Firefox Dev Tools -> pestaña Red (en la pestaña Seguridad para una solicitud individual) fue:

0 ocurrió

un error durante una conexión con foo.bar.com.SSL pares era no pueden negociar un conjunto aceptable de parameters.Error seguridad código: SSL_ERROR_HANDSHAKE_FAILURE_ALERT

Cuestiones relacionadas