Класс HttpCookie
- Все реализуемые интерфейсы:
Cloneable
public final class HttpCookie extends Object implements Cloneable
Существует 3 спецификации HTTP-cookie:
черновик Netscape
RFC 2109 — http://www.ietf.org/rfc/rfc2109.txt
RFC 2965 — http://www.ietf.org/rfc/rfc2965.txt
Класс HttpCookie поддерживает все 3 варианта синтаксиса. Этот класс также обеспечивает частичную поддержку RFC 6265.
- Начиная с:
- 1.6
- Внешние спецификации
Краткое описание конструкторов
| Конструктор | Описание |
|---|---|
HttpCookie |
Создает cookie с указанными именем и значением. |
Краткое описание методов
| Модификатор и тип | Метод | Описание |
|---|---|---|
Object |
clone() |
Создает и возвращает копию этого объекта. |
static boolean |
domainMatches |
Вспомогательный метод для проверки того, входит ли имя хоста в домен. |
boolean |
equals |
Проверяет равенство двух HTTP-cookie. |
String |
getComment() |
Возвращает комментарий, описывающий назначение этой cookie, или null, если у cookie нет комментария. |
String |
getCommentURL() |
Возвращает URL комментария, описывающего назначение этой cookie, или null, если у cookie нет URL комментария. |
boolean |
getDiscard() |
Возвращает атрибут discard cookie |
String |
getDomain() |
Возвращает доменное имя, заданное для этой cookie. |
long |
getMaxAge() |
Возвращает максимальный срок действия cookie в секундах с момента создания объекта. |
String |
getName() |
Возвращает имя cookie. |
String |
getPath() |
Возвращает путь на сервере, по которому браузер отправляет эту cookie обратно. |
String |
getPortlist() |
Возвращает атрибут списка портов cookie |
boolean |
getSecure() |
Возвращает true, если отправка этой cookie должна быть ограничена защищенным протоколом, или false, если ее можно отправлять с использованием любого протокола. |
String |
getValue() |
Возвращает значение cookie. |
int |
getVersion() |
Возвращает версию протокола, требованиям которого соответствует эта cookie. |
boolean |
hasExpired() |
Сообщает, истек ли срок действия этой HTTP-cookie. |
int |
hashCode() |
Возвращает хеш-код этой HTTP-cookie. |
boolean |
isHttpOnly() |
Возвращает true, если эта cookie содержит атрибут HttpOnly. |
static List |
parse |
Создает cookie из строки заголовка Set-Cookie или Set-Cookie2. |
void |
setComment |
Задает комментарий, описывающий назначение cookie. |
void |
setCommentURL |
Задает URL комментария, описывающего назначение cookie. |
void |
setDiscard |
Задает, должен ли пользовательский агент безусловно удалять cookie. |
void |
setDomain |
Задает домен, в пределах которого должна передаваться эта cookie. |
void |
setHttpOnly |
Указывает, следует ли считать cookie доступной только по HTTP. |
void |
setMaxAge |
Задает максимальный срок действия cookie в секундах. |
void |
setPath |
Задает путь для cookie, по которому клиент должен отправлять ее обратно. |
void |
setPortlist |
Задает список портов cookie, ограничивающий порт или порты, на которые cookie может быть отправлена обратно в заголовке Cookie. |
void |
setSecure |
Указывает, следует ли отправлять cookie только с использованием защищенного протокола, например HTTPS или SSL. |
void |
setValue |
Присваивает новое значение cookie после ее создания. |
void |
setVersion |
Задает версию протокола cookie, требованиям которого соответствует эта cookie. |
String |
toString() |
Создает строковое представление заголовка cookie для этой cookie в формате, определенном соответствующей спецификацией cookie, но без начального токена "Cookie:". |
Методы, объявленные в классе Object
finalize, getClass, notify, notifyAll, wait, wait, wait | Модификатор и тип | Метод | Описание |
|---|---|---|
protected void |
finalize() |
Устарело, будет удалено: этот элемент API может быть удален в будущей версии. Финализация устарела и будет удалена в одном из будущих выпусков. |
final Class |
getClass() |
Возвращает класс времени выполнения этого Object. |
final void |
notify() |
Пробуждает один поток, ожидающий на мониторе этого объекта. |
final void |
notifyAll() |
Пробуждает все потоки, ожидающие на мониторе этого объекта. |
final void |
wait() |
Заставляет текущий поток ожидать пробуждения, обычно вследствие вызова notify или interrupt. |
final void |
wait |
Заставляет текущий поток ожидать пробуждения, обычно вследствие вызова notify или interrupt, либо истечения заданного промежутка реального времени. |
final void |
wait |
Заставляет текущий поток ожидать пробуждения, обычно вследствие вызова notify или interrupt, либо истечения заданного промежутка реального времени. |
Подробное описание конструкторов
HttpCookie
public HttpCookie(String name, String value)
Имя должно соответствовать RFC 2965. Это означает, что оно может содержать только ASCII-буквы и цифры, не может содержать запятые, точки с запятой или пробельные символы и не может начинаться с символа $. Имя файла cookie нельзя изменить после создания.
Значение может быть любым, которое сервер решит отправить. Вероятно, оно представляет интерес только для сервера. Значение файла cookie можно изменить после создания с помощью метода setValue.
По умолчанию файлы cookie создаются в соответствии со спецификацией RFC 2965. Версию можно изменить с помощью метода setVersion.
- Параметры:
-
name—String, задающий имя файла cookie -
value—String, задающий значение файла cookie - Исключения:
-
IllegalArgumentException— если имя файла cookie содержит недопустимые символы -
NullPointerException— еслиnameравноnull - См. также:
Подробное описание методов
parse
public static List<HttpCookie> parse(String header)
- Параметры:
-
header—String, задающий заголовок set-cookie. Заголовок должен начинаться с токена "set-cookie" или "set-cookie2"; также он может не содержать начального токена. - Возвращает:
- список файлов cookie, разобранных из строки заголовка
- Исключения:
-
IllegalArgumentException— если строка заголовка нарушает синтаксис спецификации файлов cookie или имя файла cookie содержит недопустимые символы. -
NullPointerException— если строка заголовка равнаnull
hasExpired
public boolean hasExpired()
getMaxAge() секунд с момента создания этого объекта.- Возвращает:
-
true, если срок действия этого HTTP-файла cookie истёк; в противном случае —false
setComment
public void setComment(String purpose)
- Параметры:
-
purpose—String, задающий комментарий для отображения пользователю - См. также:
getComment
public String getComment()
null, если у файла cookie нет комментария.- Возвращает:
String, содержащий комментарий, илиnull, если комментария нет- См. также:
setCommentURL
public void setCommentURL(String purpose)
- Параметры:
-
purpose—String, задающий URL комментария для отображения пользователю - См. также:
getCommentURL
public String getCommentURL()
null, если у файла cookie нет URL комментария.- Возвращает:
String, содержащий URL комментария, илиnull, если его нет- См. также:
setDiscard
public void setDiscard(boolean discard)
- Параметры:
-
discard—trueуказывает, что файл cookie нужно безусловно удалить - См. также:
getDiscard
public boolean getDiscard()
- Возвращает:
boolean, представляющий атрибут удаления этого файла cookie- См. также:
setPortlist
public void setPortlist(String ports)
- Параметры:
-
ports—String, задающий список портов в виде последовательности цифр, разделённых запятыми - См. также:
getPortlist
public String getPortlist()
- Возвращает:
String, содержащий список портов, илиnull, если он отсутствует- См. также:
setDomain
public void setDomain(String pattern)
Формат доменного имени определён в RFC 2965. Доменное имя начинается с точки (.foo.com) и означает, что файл cookie виден серверам в указанной зоне системы доменных имён (DNS) (например, www.foo.com, но не a.b.foo.com). По умолчанию файлы cookie возвращаются только серверу, который их отправил.
- Параметры:
-
pattern—String, содержащее доменное имя, в пределах которого виден этот файл cookie; формат должен соответствовать RFC 2965 - См. также:
getDomain
public String getDomain()
- Возвращает:
String, содержащее доменное имя- См. также:
setMaxAge
public void setMaxAge(long expiry)
Положительное значение указывает, что срок действия файла cookie истечёт по прошествии указанного числа секунд. Обратите внимание: это максимальный срок, по истечении которого срок действия файла cookie истечёт, а не его текущий возраст.
Отрицательное значение означает, что файл cookie не сохраняется постоянно и будет удалён при выходе из веб-браузера. Нулевое значение приводит к удалению файла cookie.
- Параметры:
-
expiry— целое число, задающее максимальный срок действия файла cookie в секундах; если значение равно нулю, файл cookie следует немедленно удалить; в противном случае максимальный срок действия файла cookie не задан. - См. также:
getMaxAge
public long getMaxAge()
-1, что означает, что файл cookie будет храниться до закрытия браузера. Значение этого атрибута определяется следующими шагами в соответствии с RFC 6265: - Если был вызван
setMaxAge(long), возвращается заданное значение. - Если предыдущий шаг не дал результата и был разобран атрибут
Max-Age, возвращается его значение. - Если предыдущий шаг не дал результата и был разобран атрибут
Expires, возвращается значение maxAge, вычисленное при разборе на основе этой даты. - Если предыдущие шаги не дали результата, возвращается
-1.
- Возвращает:
- целое число, задающее максимальный срок действия файла cookie в секундах
- См. также:
setPath
public void setPath(String uri)
Файл cookie виден на всех страницах указанного каталога и его подкаталогов. Путь файла cookie должен включать сервлет, задавший этот файл cookie, например /catalog, что делает файл cookie видимым во всех каталогах сервера внутри /catalog.
Дополнительные сведения о задании путей для файлов cookie см. в RFC 2965 (доступен в Интернете).
- Параметры:
-
uri—String, задающий путь - См. также:
getPath
public String getPath()
- Возвращает:
String, задающий путь, содержащий имя сервлета, например /catalog- См. также:
setSecure
public void setSecure(boolean flag)
Значение по умолчанию — false.
- Параметры:
-
flag— еслиtrue, файл cookie можно отправлять только по защищённому протоколу, например HTTPS. Еслиfalse, его можно отправлять по любому протоколу. - См. также:
getSecure
public boolean getSecure()
true, если отправка этого файла cookie должна быть ограничена защищённым протоколом, или false, если его можно отправлять по любому протоколу.- Возвращает:
-
false, если файл cookie можно отправлять по любому стандартному протоколу; в противном случае —true - См. также:
getName
public String getName()
- Возвращает:
String, задающий имя файла cookie
setValue
public void setValue(String newValue)
В файлах cookie версии 0 значения не должны содержать пробельные символы, квадратные скобки, круглые скобки, знаки равенства, запятые, двойные кавычки, косые черты, вопросительные знаки, символы @, двоеточия и точки с запятой. Пустые значения могут обрабатываться по-разному в разных браузерах.
- Параметры:
-
newValue—String, задающий новое значение - См. также:
getValue
public String getValue()
- Возвращает:
String, содержащее текущее значение файла cookie- См. также:
getVersion
public int getVersion()
- Возвращает:
- 0, если файл cookie соответствует исходной спецификации Netscape; 1, если файл cookie соответствует RFC 2965/2109
- См. также:
setVersion
public void setVersion(int v)
- Параметры:
-
v— 0, если файл cookie должен соответствовать исходной спецификации Netscape; 1, если файл cookie должен соответствовать RFC 2965/2109 - Исключения:
-
IllegalArgumentException— еслиvне равно ни 0, ни 1 - См. также:
isHttpOnly
public boolean isHttpOnly()
true, если этот файл cookie содержит атрибут HttpOnly. Это означает, что файл cookie не должен быть доступен механизмам сценариев, например JavaScript.- Возвращает:
-
true, если этот файл cookie следует считать HTTPOnly - См. также:
setHttpOnly
public void setHttpOnly(boolean httpOnly)
true, это означает, что файл cookie не должен быть доступен механизмам сценариев, например JavaScript.- Параметры:
-
httpOnly— еслиtrue, сделать файл cookie доступным только по HTTP, то есть видимым только в составе HTTP-запроса. - См. также:
domainMatches
public static boolean domainMatches(String domain, String host)
Эта концепция описана в спецификации файлов cookie. Для её понимания сначала нужно определить несколько терминов:
эффективное имя узла = имя узла, если оно содержит точку
или = hostname.local, если точки нет
Имя узла A соответствует домену узла B, если:
- строковые значения их имён узлов совпадают без учёта регистра; или
- A — строка HDN и имеет форму NB, где N — непустая строка имени, B имеет форму .B', а B' — строка HDN. (Таким образом, x.y.com соответствует домену .Y.com, но не Y.com.)
Имя узла не входит в домен (раздел 3.3.2 RFC 2965), если:
- Значение атрибута Domain не содержит внутренних точек и не равно .local.
- Эффективное имя узла, полученное из request-host, не соответствует атрибуту Domain.
- request-host — это HDN (а не IP-адрес) и имеет форму HD, где D — значение атрибута Domain, а H — строка, содержащая одну или несколько точек.
Примеры:
- Заголовок Set-Cookie2 для request-host y.x.foo.com с Domain=.foo.com будет отклонён, поскольку H — это y.x, содержащий точку.
- Заголовок Set-Cookie2 для request-host x.foo.com с Domain=.foo.com будет принят.
- Заголовок Set-Cookie2 с Domain=.com или Domain=.com. всегда будет отклонён, поскольку в значении нет внутренней точки.
- Заголовок Set-Cookie2 для request-host example с Domain=.local будет принят, поскольку эффективное имя узла для request-host — example.local, а example.local соответствует домену .local.
- Параметры:
-
domain— доменное имя, с которым нужно сопоставить имя узла -
host— проверяемое имя узла - Возвращает:
-
true, если они соответствуют друг другу по домену;falseв противном случае
toString
public String toString()
equals
public boolean equals(Object obj)
Результат равен true только в том случае, если оба файла cookie принадлежат одному домену (без учёта регистра), имеют одинаковые имена (без учёта регистра) и одинаковые пути (с учётом регистра).
hashCode
public int hashCode()
getName().toLowerCase().hashCode()
+ getDomain().toLowerCase().hashCode()
+ getPath().hashCode()
clone
© 1993, 2025, Oracle and/or its affiliates. All rights reserved.
Documentation extracted from Debian's OpenJDK Development Kit package.
Licensed under the GNU General Public License, version 2, with the Classpath Exception.
Various third party code in OpenJDK is licensed under different licenses (see Debian package).
Java and OpenJDK are trademarks or registered trademarks of Oracle and/or its affiliates.