¿Cada solicitud web envía las cookies del navegador?
No estoy hablando de vistas de página, sino de una solicitud de una imagen, .js
archivo, etc.
Actualización Si una página web tiene 50 elementos, son 50 solicitudes. ¿Por qué enviaría las MISMAS cookies para cada solicitud, no almacena en caché o sabe que ya lo tiene?
Respuestas:
Sí, siempre que la URL solicitada se encuentre dentro del mismo dominio y ruta definidos en la cookie (y todas las demás restricciones: seguro, httponly, no caducado, etc.), la cookie se enviará para cada solicitud.
fuente
Como otros han dicho, si se cumplen las restricciones de host, ruta, etc. de la cookie, se enviará 50 veces.
Pero también preguntó por qué: porque las cookies son una característica HTTP, y HTTP no tiene estado. HTTP está diseñado para funcionar sin que el servidor almacene ningún estado entre solicitudes.
De hecho, el servidor no tiene una forma sólida de reconocer qué usuario está enviando una solicitud determinada; podría haber mil usuarios detrás de un solo proxy web (y, por lo tanto, una dirección IP). Si no se enviaran las cookies a todas las solicitudes, el servidor no tendría forma de saber qué usuario está solicitando cualquier recurso.
Finalmente, el navegador no tiene idea de si el servidor necesita las cookies o no, solo sabe que el servidor le ordenó enviar la cookie para cualquier solicitud a foo.com, por lo que lo hace. A veces las imágenes las necesitan (por ejemplo, generadas dinámicamente por usuario), a veces no, pero el navegador no puede decirlo.
fuente
Si. Cada solicitud envía las cookies que pertenecen al mismo dominio. No se almacenan en caché ya que HTTP no tiene estado, lo que significa que cada solicitud debe ser suficiente para que el servidor descubra qué hacer con ella. Supongamos que tiene imágenes a las que solo pueden acceder ciertos usuarios; usted debe enviar la cookie de autenticación con cada una de esas 50 solicitudes, por lo que el servidor sabe que es usted y no otra persona, o un invitado, entre el grupo de peticiones que se está haciendo.
Dicho esto, es posible que las cookies no se envíen debido a otras restricciones mencionadas en las otras respuestas, como la configuración de HTTPS, la ruta o el dominio. Especialmente allí, algo importante a tener en cuenta: las cookies no se comparten entre dominios. Eso ayuda a reducir el tamaño de las llamadas HTTP para archivos estáticos, como las imágenes y los scripts que mencionó.
Ejemplo: tiene 4 cookies en
www.stackoverflow.com
; si realiza una solicitudwww.stackoverflow.com/images/logo.png
, se enviarán todas esas 4 cookies.Sin embargo, si solicita
stackoverflow.com/images/logo.png
(observe el cambio de subdominio) oimages.stackoverflow.com/logo.png
, esas 4 cookies no estarán presentes, pero tal vez las relacionadas con estos dominios sí lo estarán.Puede leer más sobre las cookies y las imágenes que solicitan, por ejemplo, en esta publicación de blog de StackOverflow .
fuente
No. No todas las solicitudes envían las cookies. Depende de la configuración de las cookies y la conexión cliente-servidor.
Por ejemplo, si la
secure
opción de su cookie está configurada en,true
entonces debe transmitirse a través de una conexión HTTPS segura. Significa que cuando ve ese sitio web con protocolo HTTP, estas cookies no serán enviadas por los navegadores ya que el indicador de seguridad es verdadero.fuente
Cookie tiene una propiedad de "ruta". Si "ruta = /", la respuesta es Sí.
fuente
/app/
delgadas o similares, conservaría la portabilidad sin necesidad de subdominios separados para eliminar la sobrecarga redundante. O podría deshacerse del ahora inútil Google Analytics para empezar. He visto encabezados de cookies tanto tiempo que me pregunto si mi abuela los estaba tejiendo.Han pasado 3 años
Hay otra razón por la cual un navegador no enviaría cookies. Puede agregar un
crossOrigin
atributo a su<script>
etiqueta y el valor a"anonymous"
. Esto evitará que se envíen cookies al servidor de destino. El 99.9% de las veces, sus javascripts son archivos estáticos y no genera ese código js en función de las cookies de la solicitud. Si tiene 1KB de cookies y tiene 200 recursos en su página, entonces su usuario está cargando 200KB, y eso podría llevar algún tiempo en 3G y no tendrá ningún efecto en la página de resultados. Visite el atributo HTML: crossorigin para referencia.fuente
Sé que es un viejo tema. Pero acabo de notar que la mayoría de los navegadores no enviarán cookies para un dominio si agrega un punto final. Por ejemplo
http://example.com.
, no recibirá cookies configuradas para.example.com
. Apache, por otro lado, los trata como el mismo host. Considero que esto es útil para hacer que el seguimiento entre dominios sea más difícil para los recursos externos que incluyo, pero también podría usarlo por razones de rendimiento. Tenga en cuenta que esto frena la validación de loshttps
certificados. He realizado algunas pruebas con navegadores y mis propios dispositivos. El hack funciona en casi todos los navegadores, excepto para safari (móvil y de escritorio), que incluirá cookies en la solicitud.fuente
La respuesta corta es sí. Las siguientes líneas son de la documentación de JS
Las cookies se usaron alguna vez para el almacenamiento general del lado del cliente. Si bien esto era legítimo cuando eran la única forma de almacenar datos en el cliente, ahora se recomienda utilizar API de almacenamiento modernas. Las cookies se envían con cada solicitud, por lo que pueden empeorar el rendimiento (especialmente para las conexiones de datos móviles).
fuente