Zmei Posted January 1, 2004 Report Share Posted January 1, 2004 Формат и синтаксис Cookie -------------------------------------------------------------------------------- Спецификация Полное описание поля Set-Cookie HTTP заголовка: Set-Cookie: NAME=VALUE; expires=DATE; path=PATH; domain=DOMAIN_NAME; secure Минимальное описание поля Set-Cookie HTTP заголовка: Set-Cookie: NAME=VALUE; NAME=VALUE - строка символов, исключая перевод строки, запятые и пробелы. NAME-имя cookie, VALUE - значение. expires=DATE - время хранения cookie, т.е. вместо DATE должна стоять дата в формате Wdy, DD-Mon-YYYY HH:MM:SS GMT, после которой истекает время хранения cookie. Если этот атрибут не указан, то cookie хранится в течение одного сеанса, до закрытия броузера. domain=DOMAIN_NAME - домен, для которого значение cookie действительно. Например, domain=cit-forum.com. В этом случае значение cookie будет действительно и для сервера cit-forum.com, и для www.cit-forum.com. Но не радуйтесь, указания двух последних периодов доменных имен хватает только для доменов иерархии "COM", "EDU", "NET", "ORG", "GOV", "MIL", и "INT". Для доменов иерархии "RU" придется указывать три периода. Если этот атрибут опущен, то по умолчанию используется доменное имя сервера, с которого было выставлено значение cookie. path=PATH - этот атрибут устанавливает подмножество документов, для которых действительно значание cookie. Например, указание path=/win приведет к тому, что значение cookie будет действительно для множества документов ffb в директории /win/, в директории /wings/ и файлов в текущей директории с именами типа wind.html и windows.shtml Если этот атрибут не указан, то значение cookie распространяется только на документы в той же директории, что и документ, в котором было установлено cookie. secure - если стоит такой маркер, то информация cookie пересылается только через HTTPS (HTTP с использованием SSL). Если этот маркер не указан, то информация пересылается обычным способом. Синтаксис HTTP заголовка для поля Cookie Когда запрашивается документ с HTTP сервера, броузер проверяет свои cookie на предмет соответствия домену сервера и прочей информации. В случае, если найдены удовлетворяющие всем условиям значения cookie броузер посылает их в серверу в виде пары имя/значение: Cookie: NAME1=OPAQUE_STRING1; NAME2=OPAQUE_STRING2 ... Дополнительные сведения В случае, если cookie принимает новое значение при имеющемся уже в броузере cookie с совпадающими NAME, domain и path, старое значение затирается новым. В остальных случаях новые cookies добавляются. Использование expires не гарантирует сохранность cookie в течение заданного периода времени, поскольку клиент (броузер) может удалить запись вследствие нехватки выделенного места или каких-либо других лимитов. Клиент (броузер) имеет следующие ограничения: всего может храниться до 300 значений cookies каждый cookie не может превышать 4Кбайт с одного сервера или домена может храниться до 20 значений cookie Если ограничение 300 или 20 превышается, то удаляется первая по времени запись. При превышении 4К - корректность такого cookie страдает - отрезается кусок записи (с начала этой записи) равный превышению. В случае кэширования документов, например, proxy-сервером, поле Set-cookie HTTP заголовка никогда не кэшируется. Если proxy-сервер принимает ответ, содержащий поле Set-cookie в заголовке, предполагается, что поле таки доходит до клиента вне зависимости от статуса 304 (Not Modified) или 200 (OK). Соответственно, если клиентский запрос содержит в заголовке Cookie, то он должен дойти до сервера, даже если установлен If-modified-since. Я полагаю, что все что сказано про proxy не относится к случаю, когда cookie устанавливается жестко с помощью META-тагов. Примеры Ниже приведено несколько примеров, иллюстрирующих использование cookies Первый пример: Клиент запрашивает документ и принимает ответ: Set-Cookie: CUSTOMER=WILE_E_COYOTE; path=/; expires=Wednesday, 09-Nov-99 23:12:40 GMT Когда клиент запрашивает URL с путем "/" на этом сервере, он посылает: Cookie: CUSTOMER=WILE_E_COYOTE Клиент запрашивает документ и принимает ответ: Set-Cookie: PART_NUMBER=ROCKET_LAUNCHER_0001; path=/ Когда клиент запрашивает URL с путем "/" на этом сервере, он посылает: Cookie: CUSTOMER=WILE_E_COYOTE; PART_NUMBER=ROCKET_LAUNCHER_0001 Клиент получает: Set-Cookie: SHIPPING=FEDEX; path=/foo Когда клиент запрашивает URL с путем "/" на этом сервере, он посылает: Cookie: CUSTOMER=WILE_E_COYOTE; PART_NUMBER=ROCKET_LAUNCHER_0001 Когда клиент запрашивает URL с путем "/foo" на этом сервере, он посылает: Cookie: CUSTOMER=WILE_E_COYOTE; PART_NUMBER=ROCKET_LAUNCHER_0001; SHIPPING=FEDEX Второй пример: Клиент принимает: Set-Cookie: PART_NUMBER=ROCKET_LAUNCHER_0001; path=/ Когда клиент запрашивает URL с путем "/" на этом сервере, он посылает: Cookie: PART_NUMBER=ROCKET_LAUNCHER_0001 Клиент принимает: Set-Cookie: PART_NUMBER=RIDING_ROCKET ba3 _0023; path=/ammo Когда клиент запрашивает URL с путем "/ammo" на этом сервере, он посылает: Cookie: PART_NUMBER=RIDING_ROCKET_0023; PART_NUMBER=ROCKET_LAUNCHER_0001 Комментарий: здесь мы имеем две пары имя/значение с именем "PART_NUMBER". Это наследие из предыдущего примера, где значение для пути "/" прибавилось к значению для "/ammo". Quote Link to post Share on other sites
Darvin Posted January 1, 2004 Report Share Posted January 1, 2004 разреши спросить..., к чему это.... тоесть нафиг ? :} а чё, кстати Армян-кулхацкер нету... ? :{ или есть, просто хорошо скрываются ? :}} Quote Link to post Share on other sites
Zmei Posted January 2, 2004 Author Report Share Posted January 2, 2004 Darv skolko y tebja voprosov, k chemy, pochemy, zachem ) loooooooooooooool coocki ja vilojil k tomy chto seichas dymaem mojet banned delat cherez coocki v chate, ili ge vvesti obizatelnyu registraciu vo vsjakom slychae ja bydy inogda vikladivat interesnie veshi iz moego arxiva maloli kokogo zainteresyet, ved etot razdel ne tolko Darvin chitaet ;-) Quote Link to post Share on other sites
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.