Saltar al contenido

La solicitud POST entre dominios no envía la cookie Ajax Jquery

Solución:

No puede configurar ni leer cookies en solicitudes CORS a través de JavaScript. Aunque CORS permite solicitudes de origen cruzado, las cookies aún están sujetas a la política del mismo origen del navegador, lo que significa que solo las páginas del mismo origen pueden leer / escribir la cookie. withCredentials solo significa que las cookies establecidas por el host remoto se envían a ese host remoto. Tendrá que configurar la cookie desde el servidor remoto utilizando el Set-Cookie encabezamiento.

Tenga en cuenta que esto no resuelve el proceso de uso compartido de cookies, ya que en general es una mala práctica.

Necesita usar JSONP como su tipo:

De la documentación de $ .ajax: solicitudes entre dominios y tipo de datos: las solicitudes “jsonp” no admiten el funcionamiento sincrónico.

$.ajax(
    { 
      type: "POST",
      url: "http://example.com/api/getlist.json",
      dataType: 'jsonp',
      xhrFields: {
           withCredentials: true
      },
      crossDomain: true,
      beforeSend: function(xhr) {
            xhr.setRequestHeader("Cookie", "session=xxxyyyzzz");
      },
      success: function(){
           alert('success');
      },
      error: function (xhr) {
             alert(xhr.responseText);
      }
    }
);

Ha habido una gran cantidad de cambios recientes en este campo, por lo que pensé que sería útil una nueva respuesta.

Para que el navegador envíe una cookie a otro sitio durante una solicitud, se deben cumplir los siguientes criterios:

  • los Set-Cookie El encabezado del sitio de destino debe contener el SameSite=None y Secure etiquetas. Si Secure no se usa el SameSite se ignorará el encabezado.
  • La solicitud debe hacerse a un https punto final, un requisito del Secure bandera.
  • los XHRRequest debe estar hecho con withCredentials=true. Si usa $.ajax() esto se logra con el xhrFields parámetro (que requiere jQuery=1.5.1+)
  • El servidor debe responder con Access-Control-Allow-Origin encabezado que coincide con la solicitud Origin encabezamiento. (* no se respetará en este caso)

Mucha gente llega a esta publicación tratando de hacer desarrollo local en un punto final remoto, lo cual es posible si se cumplen los criterios anteriores.

¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *