2011-07-04 17 views
12

Tengo CORS trabajando en mi proyecto actual, aunque parece que las cookies no funcionan correctamente.Jquery AJAX CORS + HttpOnly Cookie

Ahora me sale bien la cookie, el servidor la emite y la envía y Firefox la acepta, puedo verla en la sección de Firebug cookies. Sin embargo cuando hago llamadas posteriores a ese servicio, duerma parece enviar la cookie en el encabezado ...

GET /some/entity/ HTTP/1.1 
Host: localhost:1837 
User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64; rv:5.0) Gecko/20100101 Firefox/5.0 
Accept: */* 
Accept-Language: en-gb,en;q=0.5 
Accept-Encoding: gzip, deflate 
Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.7 
Connection: keep-alive 
Referer: http://localhost:6879 
Origin: http://localhost:6879 

¿Es necesario hacer nada especial con mi llamada AJAX?

var ajaxOptions = { 
    url: serviceResourceUrl, 
    type: "get", 
    dataType: "json", 
    success: successCallback, 
    error: failedCallback, 
    xhrFields: { withCredentials: true } 
}; 

$.ajax(ajaxOptions); 

Respuesta

9

Pruebe usar la propiedad beforeSend en lugar de xhrFields. En su caso:

var ajaxOptions = { 
    url: serviceResourceUrl, 
    type: "get", 
    dataType: "json", 
    success: successCallback, 
    error: failedCallback, 
    beforeSend: function(xhr){ 
     xhr.withCredentials = true; 
    } 
}; 

$.ajax(ajaxOptions); 

Puede obtener más información aquí: Sending credentials with cross-domain posts?

+1

que estaba originalmente tratando de hacerlo de esa manera, pero volvería a trabajar en absoluto. Vi una publicación en xhrFields: {...} y funcionó para recuperar las cookies para mí. Intentaremos con el otro método nuevamente. – somemvcperson

+0

Acabo de probarlo, aún no tuve suerte. La cookie se puede ver en firebug, tiene la caducidad y el dominio correctos. Cuando se depura en el servicio no hay cookies :( – somemvcperson

+0

Disculpe por todos los comentarios, pero solo comprobé dos veces el dominio y en Firebug informa localhost (que es parcialmente correcto), sin embargo, el servicio en desarrollo está realmente en localhost: 1873. Si Intento editar la cookie y poner ese dominio, simplemente lo ignora y parece mantener solo el localhost. El servidor parece configurarlo correctamente ... ¿Es posible que sea un error con Firefox? – somemvcperson

Cuestiones relacionadas