Является cookie “метаданными” (истекает, путь, …), переданный серверу?

При установке cookie Вы устанавливаете необработанные cookie-данные и некоторые метаданные. Эти метаданные включают путь для того, где cookie допустим, время истечения срока cookie, и так далее.

Когда браузер выполнит запрос, что точно браузеры отправят с ним? Это отправит полный cookie со всеми "метаданными"? Или только фактические данные cookie, без метаданных?

5
задан August Lilleaas 16 January 2010 в 09:07
поделиться

4 ответа

nota bene.

Этот ответ имеет 20 vots сейчас, но он не предназначен как индоссамент std:: valarray .

По моему опыту, время лучше потратить на установку и обучение использованию полноценной библиотеки математики, такой как Eigen . У Valarray меньше возможностей, чем у конкурентов, но он не более эффективен или особенно прост в использовании.

Если вам нужна лишь небольшая линейная алгебра, и вы не можете добавить что-либо в цепочку инструментов, то, возможно, valarray подойдет. Но быть застрявшим, неспособным выразить математически правильное решение вашей проблемы, очень плохая позиция быть в. Математика беспощадна и непростительна. Используйте правильный инструмент для задания.


Стандартная библиотека предоставляет std:: valarray < double > . std:: vector < > , предложенный здесь несколькими другими, предназначен в качестве контейнера общего назначения для объектов. valarray , менее известный, поскольку является более специализированным (не использующим «специализированный» в качестве термина C++), имеет несколько преимуществ:

  • Он не выделяет лишнего пространства. Вектор округляется до ближайшей степени, равной двум, чтобы его можно было изменять, не перераспределяя каждый раз. (Можно изменить размер valarray ; Это все еще так же дорого, как realloc () .)
  • Вы можете разрезать его, чтобы легко получить доступ к строкам и столбцам.
  • Арифметические операторы работают так, как вы ожидали.

Конечно, преимущество использования C заключается в том, что вам не нужно управлять памятью. Размеры могут находиться в стеке или в объекте-фрагменте.

std::valarray<double> matrix( row * col ); // no more, no less, than a matrix
matrix[ std::slice( 2, col, row ) ] = pi; // set third column to pi
matrix[ std::slice( 3*row, row, 1 ) ] = e; // set fourth row to e
-121--1551790-

Кривая Пеано - заполняющий пространство фрактал, позволяющий равномерно покрывать 2-D область (или более высокомерную область) путем 1-D. При выполнении локальных операций с многомерным массивом сохранение данных массива и/или доступ к ним в порядке заполнения пространственных кривых может повысить когерентность кэша для всех уровней кэша.

-121--1307037-

В последующих запросах не возвращается только значение файла cookie, остальные метаданные остаются на клиенте.

При определении файла cookie на сервере в ответе, содержащем имя, значение и другие метаданные файла cookie, создается заголовок Set-Cookie . Несколько файлов cookie создадут несколько заголовков Set-Cookie в ответе.

Когда браузер делает последующие запросы, он проверяет свою «базу данных» доступных файлов cookie, чтобы увидеть, какие файлы cookie подходят для запрашиваемого пути. Затем создается единственный заголовок Cookie в запросе, который содержит только ряд пар имя/значение соответствующих cookie-файлов.

Это важно, чтобы держать жесткий контроль над количеством файлов cookie и размером данных, в противном случае вы можете обнаружить, что вес данных cookie, отправляемых для каждого запроса может быть сдерживающим для производительности. Это было бы намного хуже, если бы метаданные также возвращались вместе с файлами cookie.

8
ответ дан 13 December 2019 в 22:08
поделиться

Сервер устанавливает cookie с заголовком «Set-cookie». Это содержит метаданные (путь и срок действия), если указано. Клиент (браузер) отправляет только самого cookie в заголовке "cookie".

Firebug - это полезный инструмент для Firefox для просмотра всех этих заголовков. Подобные инструменты должны быть доступны для других браузеров.

1
ответ дан 13 December 2019 в 22:08
поделиться

Только данные файла cookie отправляются на сервер, другие метаданные для браузера выполнять некоторые действия, такие как истечение cookie

1
ответ дан 13 December 2019 в 22:08
поделиться

У пользователя агент повторно передает путь, домен, и атрибуты порта, если файл cookie был установлен в RFC2965 (через заголовок Set-cookie2 ), и если атрибут был указан сервером. Запрос на выборки может содержать:

Cookie: $Version="1";
  name="val"; $Path="/site"; $Domain=".example.com"; $Port="81";
  name="val"; $Path="/site/dir"; $Domain=".example.com"; $Port="81"

Если файл cookie был указан с использованием оригинального Netscape заголовка Set-cookie , атрибуты не будут переданы. Если для запроса необходимо несколько файлов cookie с тем же именем (но разными путями), все соответствующие файлы cookie будут поставлены. Пример запроса:

Cookie: name=val; name=val2

Полный спецификация здесь:

http://tools.ietf.org/html/rfc2965

Оригинальный Netscape Spec здесь:

http: //web.Чахив. org / web / 2007080505052634 / http: //wp.netscape.com/newsref/std/cookie_spec.html

0
ответ дан 13 December 2019 в 22:08
поделиться
Другие вопросы по тегам:

Похожие вопросы: