Каждый веб-запрос отправляет куки браузера?
Я говорю не о просмотрах страниц, а о запросе изображения, .js
файла и т. Д.
Обновление Если веб-страница содержит 50 элементов, это 50 запросов. Почему он отправляет одинаковые файлы cookie для каждого запроса, не кэширует или не знает, что он уже есть?
Ответы:
Да, если запрошенный URL-адрес находится в пределах того же домена и пути, определенных в файле cookie (и все другие ограничения - безопасный, httponly, срок действия не истек и т. Д.), То файл cookie будет отправляться для каждого запроса.
источник
Как уже говорили другие, если ограничения на хост, путь и т. Д. Cookie будут выполнены, он будет отправлен 50 раз.
Но вы также спросили почему: потому что куки - это функция HTTP, а HTTP не имеет состояния. HTTP предназначен для работы без сохранения сервером какого-либо состояния между запросами.
Фактически, у сервера нет надежного способа узнать, какой пользователь отправляет данный запрос; за одним веб-прокси может быть тысяча пользователей (и, следовательно, IP-адрес). Если куки не отправляются на каждый запрос, сервер не сможет узнать, какой пользователь запрашивает какой-либо ресурс.
Наконец, браузер не имеет ни малейшего представления, нужны ли серверу файлы cookie или нет, он просто знает, что сервер поручил ему отправить файл cookie для любого запроса на foo.com, поэтому он делает это. Иногда изображения нуждаются в них (например, динамически генерируемые для каждого пользователя), иногда нет, но браузер не может сказать.
источник
Да. Каждый запрос отправляет куки, которые принадлежат одному домену. Они не кэшируются, поскольку HTTP не имеет состояния, что означает, что каждого запроса должно быть достаточно, чтобы сервер выяснил, что с ним делать. Скажем, у вас есть изображения, которые доступны только определенным пользователям; Вы должны отправлять свой cookie-файл авторизации с каждым из этих 50 запросов, чтобы сервер знал, что это вы, а не кто-то другой или гость, из пула запросов, которые он получает.
При этом куки могут не отправляться с учетом других ограничений, упомянутых в других ответах, таких как настройка HTTPS, путь или домен. Особенно там, что важно отметить: куки не распределяются между доменами. Это помогает уменьшить размер HTTP-вызовов для статических файлов, таких как упомянутые вами изображения и сценарии.
Пример: у вас есть 4 куки на
www.stackoverflow.com
; если вы сделаете запросwww.stackoverflow.com/images/logo.png
, все эти 4 куки будут отправлены.Однако, если вы запрашиваете
stackoverflow.com/images/logo.png
(обратите внимание на изменение субдомена) илиimages.stackoverflow.com/logo.png
эти 4 cookie-файла не будут присутствовать, но, возможно, будут присутствовать те, которые связаны с этими доменами.Вы можете прочитать больше о файлах cookie и изображениях, запрашивающих, например, в этом блог-посте StackOverflow .
источник
Нет. Не каждый запрос отправляет куки. Это зависит от конфигурации cookie и соединения клиент-сервер.
Например, если для вашего файла cookie
secure
задано значение,true
то оно должно передаваться через защищенное соединение HTTPS. Означает, что когда вы видите этот веб-сайт с протоколом HTTP, эти файлы cookie не будут отправляться браузерами, поскольку флаг безопасности установлен на true.источник
Cookie имеет свойство path. Если «путь = /», ответ - да.
источник
/app/
или такими - это сохраняло бы мобильность без необходимости использования отдельных поддоменов для устранения избыточных накладных расходов. Или вы могли бы отказаться от ныне бесполезной Google Analytics для начала. Я видел заголовки печенья так долго, что я удивляюсь, связала ли их моя бабушка.Прошло 3 года
Есть еще одна причина, по которой браузер не отправляет куки. Вы можете добавить
crossOrigin
атрибут к своему<script>
тегу и значение для"anonymous"
. Это предотвратит отправку файлов cookie на сервер назначения. В 99,9% случаев ваши javascript-коды являются статическими файлами, и вы не генерируете этот js-код на основе файлов cookie запроса. Если у вас есть 1 КБ файлов cookie и 200 страниц на вашей странице, то ваш пользователь загружает 200 КБ, и это может занять некоторое время в сети 3G и оказать нулевое влияние на страницу результатов. Посетите HTML-атрибут: crossorigin для справки.источник
Я знаю, что это старая тема. Но я только что заметил, что большинство браузеров не будут отправлять куки для домена, если вы добавите конечную точку. Например
http://example.com.
, не будет получать файлы cookie, установленные для.example.com
. Apache, с другой стороны, рассматривает их как один и тот же хост. Я считаю это полезным, чтобы усложнить отслеживание междоменных доменов для внешних ресурсов, которые я включаю, но вы также можете использовать его из соображений производительности. Обратите внимание, что это тормозит проверкуhttps
сертификатов. Я провел несколько тестов, используя браузерные снимки и мои собственные устройства. Хак работает практически во всех браузерах, кроме сафари (мобильных и настольных), которые будут включать куки в запросе.источник
Краткий ответ - да. Следующие строки взяты из документации JS
Cookies когда-то использовались для общего хранения на стороне клиента. Хотя это было законно, когда они были единственным способом хранения данных на клиенте, сейчас рекомендуется использовать современные API хранилища. Файлы cookie отправляются при каждом запросе, поэтому они могут ухудшить производительность (особенно для мобильных соединений для передачи данных).
источник