Chaque demande Web envoie-t-elle les cookies du navigateur?
Je ne parle pas de pages vues, mais d'une demande d'image, de .js
fichier, etc.
Mise à jour Si une page Web contient 50 éléments, c'est 50 demandes. Pourquoi enverrait-il le MÊME cookie (s) pour chaque demande, ne cache-t-il pas ou sait-il qu'il l'a déjà?
Réponses:
Oui, tant que l'URL demandée se trouve dans le même domaine et chemin défini dans le cookie (et toutes les autres restrictions - sécurisé, httponly, non expiré, etc.), le cookie sera envoyé pour chaque demande.
la source
Comme d'autres l'ont dit, si les restrictions relatives à l'hôte, au chemin, etc. du cookie sont respectées, il sera envoyé 50 fois.
Mais vous avez également demandé pourquoi: car les cookies sont une fonctionnalité HTTP et HTTP est sans état. HTTP est conçu pour fonctionner sans que le serveur ne stocke aucun état entre les requêtes.
En fait, le serveur n'a pas de moyen solide de reconnaître quel utilisateur envoie une demande donnée; il pourrait y avoir mille utilisateurs derrière un seul proxy web (et donc une adresse IP). Si les cookies n'étaient pas envoyés à chaque demande, le serveur n'aurait aucun moyen de savoir quel utilisateur demande quelle que soit la ressource.
Enfin, le navigateur n'a aucune idée si le serveur a besoin des cookies ou non, il sait simplement que le serveur lui a demandé d'envoyer le cookie pour toute demande à foo.com, donc il le fait. Parfois, les images en ont besoin (par exemple, générées dynamiquement par utilisateur), parfois non, mais le navigateur ne peut pas le dire.
la source
Oui. Chaque demande envoie des cookies appartenant au même domaine. Ils ne sont pas mis en cache car HTTP est sans état, ce qui signifie que chaque demande doit être suffisante pour que le serveur sache quoi en faire. Supposons que vous ayez des images qui ne sont accessibles que par certains utilisateurs; vous devez envoyer votre cookie d'authentification avec chacune de ces 50 demandes, afin que le serveur sache que c'est vous et pas quelqu'un d'autre, ou un invité, parmi le pool de demandes qu'il reçoit.
Cela dit, les cookies peuvent ne pas être envoyés compte tenu des autres restrictions mentionnées dans les autres réponses, telles que le paramètre HTTPS, le chemin ou le domaine. Surtout là, une chose importante à noter: les cookies ne sont pas partagés entre les domaines. Cela aide à réduire la taille des appels HTTP pour les fichiers statiques, tels que les images et les scripts que vous avez mentionnés.
Exemple: vous avez 4 cookies sur
www.stackoverflow.com
; si vous en faites la demandewww.stackoverflow.com/images/logo.png
, tous ces 4 cookies seront envoyés.Cependant, si vous demandez
stackoverflow.com/images/logo.png
(notez le changement de sous-domaine) ouimages.stackoverflow.com/logo.png
, ces 4 cookies ne seront pas présents - mais peut-être ceux liés à ces domaines.Vous pouvez en savoir plus sur les cookies et les images demandant, par exemple, sur ce blog StackOverflow .
la source
Non. Toutes les demandes n'envoient pas les cookies. Cela dépend de la configuration des cookies et de la connexion client-serveur.
Par exemple, si l'
secure
option de votre cookie est définie sur,true
il doit être transmis via une connexion HTTPS sécurisée. Signifie que lorsque vous voyez ce site Web avec le protocole HTTP, ces cookies ne seront pas envoyés par les navigateurs car l'indicateur sécurisé est vrai.la source
Le cookie a une propriété "path". Si "path = /", la réponse est Oui.
la source
/app/
ou similaires - cela conserverait la portabilité sans avoir besoin de sous-domaines séparés pour éliminer les frais généraux redondants. Vous pouvez également abandonner Google Analytics, désormais inutile. J'ai vu des en-têtes de cookies depuis si longtemps que je me demande si ma grand-mère les tricotait.3 ans se sont écoulés
Il y a une autre raison pour laquelle un navigateur n'envoie pas de cookies. Vous pouvez ajouter un
crossOrigin
attribut à votre<script>
balise et la valeur à"anonymous"
. Cela empêchera l'envoi de cookies au serveur de destination. 99,9% du temps, vos javascripts sont des fichiers statiques et vous ne générez pas ce code js sur la base des cookies de la requête. Si vous avez 1 Ko de cookies et que vous avez 200 ressources sur votre page, votre utilisateur télécharge 200 Ko, ce qui peut prendre un certain temps en 3G et avoir un effet nul sur la page de résultats. Visitez l' attribut HTML: crossorigin pour référence.la source
Je sais que c'est un vieux fil. Mais je viens de remarquer que la plupart des navigateurs n'enverront pas de cookies pour un domaine si vous ajoutez un point de fin. Par exemple
http://example.com.
, ne recevra pas les cookies définis pour.example.com
. Apache d'autre part les traite comme le même hôte. Je trouve cela utile pour rendre le suivi entre domaines plus difficile pour les ressources externes que j'inclus, mais vous pouvez également l'utiliser pour des raisons de performances. Notez que cela freine la validation deshttps
certificats. J'ai exécuté quelques tests à l'aide de navigateurs et de mes propres appareils. Le hack fonctionne sur presque tous les navigateurs à l'exception de safari (mobile et ordinateur), qui inclura des cookies dans la demande.la source
La réponse courte est oui. Les lignes ci-dessous proviennent de la documentation JS
Les cookies étaient autrefois utilisés pour le stockage général côté client. Bien que cela était légitime alors qu'ils étaient le seul moyen de stocker des données sur le client, il est désormais recommandé d'utiliser des API de stockage modernes. Les cookies sont envoyés à chaque demande, ce qui peut détériorer les performances (en particulier pour les connexions de données mobiles).
la source