Pregunta Evite que se envíen cookies en la solicitud de AJAX


Tengo un servicio web que invoco desde el script pero que no necesita ninguna información almacenada en las cookies. Cada vez que hago una solicitud al servicio, la cookie se envía junto con ella. Entiendo que, de forma predeterminada, las cookies se envían con solicitud HTTP, pero ¿hay alguna forma de anular ese comportamiento y no enviar la cookie?

En pocas palabras, estoy emitiendo mi solicitud de esta manera:

$.ajax({
    type: "POST",
    cache: false,
    url: url,
    data: data,
    contentType: "application/json; charset=utf-8",
    dataType: "json",
    success: function(response) { successFunc(response); },
    error: function(xhr) { errorFunc(xhr); }
});

32
2018-05-13 18:13


origen


Respuestas:


Envíe solicitudes AJAX al subdominio sin cookies en su servidor. De modo que su aplicación es www.midominio.com y las solicitudes ajax se sirven desde api.midominio.com, donde nunca se configura una cookie. También es una buena idea hacer esto con archivos estáticos como imágenes, etc.

consulte la sección "Usar dominios sin cookies para componentes" de http://developer.yahoo.com/performance/rules.html


14
2018-05-14 04:08



Otro enfoque sería antes de hacer $ .ajax:
1. Obtenga las cookies del navegador de su dominio con javascript (guárdelas en una variable global)
2. borre las cookies de su dominio con javascript desde el navegador
3. hacer la llamada $ .ajax
4. Coloque las cookies (de la variable global) en el navegador.

Si no necesita las cookies de su dominio, simplemente elimínelas (así que salte a 1. y 4.).


5
2017-12-13 12:05



No, la cookie siempre será enviada.

Puede ver cómo se envían sus cookies al navegador y usar el http bandera en ellos, lo que significa que no se enviarán a través de javascript.

O bien (que muchos sitios usan), crea un nuevo subdominio en el que nunca enviaste cookies.


1
2018-05-24 15:01



Tiene razón al decir que los navegadores envían cookies de coincidencia (ruta + dominio + sesión) junto con la solicitud HTTP. Esto es crítico para que el mecanismo de cookies funcione.

¿No podría simplemente, no leer las cookies?

Además, cuando la cookie está configurada originalmente, puede establecer qué directorio (y sus subdirectorios) puede acceder a la cookie.

Por ejemplo, si configura una cookie para que se lea en / foo / bar / only, un archivo ubicado en /whatever/ajaxHandler.php no puede ver esas cookies.

Mira esto: http://us.php.net/setcookie

Si bien no estoy seguro si estás usando PHP, podría ser un buen punto de partida para ti.


0
2018-05-13 18:21



El indicador withCredentials es necesario para enviar realmente cookies con llamadas ajax de origen cruzado.

Ver: https://developer.mozilla.org/en-US/docs/Web/API/XMLHttpRequest/withCredentials

Establecerlo en falso evitará que se envíen cookies.

Con las solicitudes del mismo origen, deberá seguir las otras respuestas mencionadas aquí.


0
2018-02-08 18:33