Tengo un AJAX GET entre dominios que se realiza previamente con éxito, pero las cookies no se adjuntan a la solicitud GET. Cuando el usuario hace clic en un botón de inicio de sesión, se realiza una POST para iniciar sesión en el usuario, que funciona correctamente entre dominios. El JavaScript es:Solicitud de CORS: ¿por qué no se envían las cookies?
$.ajax(signin_url, {
type: "POST",
contentType: "application/json; charset=utf-8",
data: JSON.stringify(credentials),
success: function(data, status, xhr) {
signInSuccess();
},
error: function(xhr, status, error) {
signInFailure();
},
beforeSend: function(xhr) {
xhr.withCredentials = true
}
});
Las cabeceras de respuesta incluyen una cookie:
Set-Cookie:user_token=snippysnipsnip; path=/; expires=Wed, 14-Jan-2032 16:16:49 GMT
Si el inicio de sesión tiene éxito, una petición GET JavaScript está hecho para obtener los datos del usuario actual:
function signInSuccess() {
$.ajax(current_user_url, {
type: "GET",
contentType: "application/json; charset=utf-8",
success: function(data, status, xhr) {
displayWelcomeMessage();
},
beforeSend: function(xhr) {
xhr.withCredentials = true;
}
});
}
Los encabezados relacionados con CORS devueltos por la solicitud OPTIONS de Chrome son:
Access-Control-Allow-Credentials:true
Access-Control-Allow-Headers:X-Requested-With, X-Prototype-Version, Content-Type, Origin, Allow
Access-Control-Allow-Methods:POST, GET, OPTIONS
Access-Control-Allow-Origin:http://192.168.0.5
Access-Control-Max-Age:1728000
Sin embargo, no se envían cookies en la solicitud GET.
han pasado 4 horas en conseguir que esto funcione. Ojalá hubiera visto esta publicación antes. ¡Gracias! – ChrisRich
PUT/OPTIONS no parece funcionar de la misma manera. ¿Por qué se enviarían las cookies para GET/POST pero no para la solicitud PUT de verificación previa? –
Las cookies no funcionan (no se configuran) en localhost. Use el dominio basado en IP en su lugar (por ejemplo, '127.0.0.1') si necesita usar cookies localmente. – Dziamid