origin falta enable disable cross control chrome cabecera allow jquery html google-chrome cors

jquery - falta - Solicitud CORS: ¿por qué no se envían las cookies?



falta la cabecera cors ''access-control-allow-origin'' jquery (1)

Tengo un AJAX GET de dominios cruzados que se realiza con éxito previo, 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:

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

Los encabezados 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, se realiza una solicitud GET de JavaScript para obtener los detalles 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.


El problema estaba en las llamadas jQuery: parece que 1.5 withCredentials debe especificarse como:

$.ajax("http://localhost:3000/users/current", { type: "GET", contentType: "application/json; charset=utf-8", success: function(data, status, xhr) { hideAllContent(); $("#sign_out_menu_item").show(); $("#sign_in_menu_item").hide(); $("#welcome").text("Welcome " + data["username"] + "!"); $("#welcome").show(); }, xhrFields: { withCredentials: true }, crossDomain: true });