Класс HttpCookie
- java.lang.Object
-
- java.net.HttpCookie
- Все реализованные интерфейсы:
Cloneable
public final class HttpCookie extends Object implements Cloneable
Объект HttpCookie представляет собой HTTP-cookie, который переносит информацию о состоянии между сервером и пользовательским агентом. Куки широко используются для создания состоятельных сессий.
Существует 3 спецификации HTTP-cookie:
Черновик Netscape
RFC 2109 - http://www.ietf.org/rfc/rfc2109.txt
RFC 2965 - http://www.ietf.org/rfc/rfc2965.txt
Класс HttpCookie может принимать все эти 3 формы синтаксиса.
- С момента:
- 1.6
Конструкторы
| Конструктор | Описание |
|---|---|
HttpCookie(String name,
String value) | Создаёт куки с заданным именем и значением. |
Методы
| Модификатор и тип | Метод | Описание |
|---|---|---|
Object | clone() | Создаёт и возвращает копию этого объекта. |
static boolean | domainMatches(String domain,
String host) | Утилитарный метод для проверки, находится ли имя хоста в домене. |
boolean | equals(Object obj) | Проверяет равенство двух HTTP-cookies. |
String | getComment() | Возвращает комментарий, описывающий назначение этого cookie, или |
String | getCommentURL() | Возвращает URL комментария, описывающего назначение этого cookie, или |
boolean | getDiscard() | Возвращает атрибут удаления cookie. |
String | getDomain() | Возвращает имя домена, заданное для этого cookie. |
long | getMaxAge() | Возвращает максимальную продолжительность действия cookie в секундах. |
String | getName() | Возвращает имя cookie. |
String | getPath() | Возвращает путь на сервере, в который браузер возвращает этот cookie. |
String | getPortlist() | Возвращает атрибут списка портов cookie. |
boolean | getSecure() | Возвращает |
String | getValue() | Возвращает значение cookie. |
int | getVersion() | Возвращает версию протокола, с которой соответствует этот cookie. |
boolean | hasExpired() | Указывает, истек ли срок действия этого HTTP-cookie. |
int | hashCode() | Возвращает хэш-код этого HTTP-cookie. |
boolean | isHttpOnly() | Возвращает |
static List<HttpCookie> | parse(String header) | Создаёт cookie из строки заголовка set-cookie или set-cookie2. |
void | setComment(String purpose) | Устанавливает комментарий, описывающий назначение cookie. |
void | setCommentURL(String purpose) | Устанавливает URL комментария, описывающего назначение cookie. |
void | setDiscard(boolean discard) | Указывает, должен ли пользовательский агент безусловно удалить cookie. |
void | setDomain(String pattern) | Указывает домен, в котором этот cookie должен быть представлен. |
void | setHttpOnly(boolean httpOnly) | Указывает, должен ли cookie считаться HTTP Only. |
void | setMaxAge(long expiry) | Устанавливает максимальный срок действия cookie в секундах. |
void | setPath(String uri) | Указывает путь для cookie, на который клиент должен вернуть cookie. |
void | setPortlist(String ports) | Указывает список портов cookie, который ограничивает порт(ы), на которые cookie может быть отправлен обратно в заголовке Cookie. |
void | setSecure(boolean flag) | Указывает, должен ли cookie отправляться только по защищённому протоколу, например HTTPS или SSL. |
void | setValue(String newValue) | Присваивает новое значение cookie после создания cookie. |
void | setVersion(int v) | Устанавливает версию протокола cookie, с которой соответствует этот cookie. |
String | toString() | Создаёт строковое представление заголовка cookie этого cookie в формате, определённом соответствующей спецификацией cookie, но без начального токена «Cookie:». |
Методы, объявленные в классе java.lang.Object
finalize, getClass, notify, notifyAll, wait, wait, wait Конструкторы
HttpCookie
public HttpCookie(String name,
String value) Создаёт cookie с заданным именем и значением.
Имя должно соответствовать RFC 2965. Это означает, что оно может содержать только символы ASCII буквенно-цифрового алфавита и не может содержать запятые, точки с запятой или пробелы или начинаться с символа $. Имя cookie не может быть изменено после создания.
Значение может быть любым, которое сервер выбирает для отправки. Его значение, вероятно, интересно только серверу. Значение cookie можно изменить после создания с помощью метода setValue.
По умолчанию cookie создаются в соответствии со спецификацией cookie RFC 2965. Версию можно изменить с помощью метода setVersion.
- Параметры:
-
name-Stringимя cookie -
value-Stringзначение cookie - Исключения:
-
IllegalArgumentException- если имя cookie содержит недопустимые символы -
NullPointerException- еслиnameравноnull - См. также:
-
setValue(java.lang.String),setVersion(int)
Методы
parse
public static List<HttpCookie> parse(String header)
Создаёт куки из строки заголовка set-cookie или set-cookie2. Синтаксис заголовка set-cookie2 из RFC 2965, раздел 3.2.2, указывает, что одна строка заголовка может содержать более одного определения куки, поэтому этот статический утилитарный метод вместо другого конструктора.
- Параметры:
-
header-String, указывающий заголовок set-cookie. Заголовок должен начинаться с токена «set-cookie» или «set-cookie2»; или он вообще не должен иметь ведущего токена. - Возвращает:
- Список куки, разобранных из строки заголовка
- Исключения:
-
IllegalArgumentException- если строка заголовка нарушает синтаксис спецификации куки или имя куки содержит недопустимые символы. -
NullPointerException- если строка заголовкаnull
hasExpired
public boolean hasExpired()
Указывает, истек ли срок действия HTTP-куки.
- Возвращает:
-
true, чтобы указать, что срок действия HTTP-куки истек; в противном случае,false
setComment
public void setComment(String purpose)
Устанавливает комментарий, описывающий назначение куки. Комментарий полезен, если браузер предоставляет куки пользователю. Комментарии не поддерживаются куками Netscape версии 0.
- Параметры:
-
purpose-String, содержащий комментарий для отображения пользователю - См. также:
getComment()
getComment
public String getComment()
Возвращает комментарий, описывающий назначение этой куки, или null , если куки нет комментария.
- Возвращает:
String, содержащий комментарий, илиnull, если нет- См. также:
setComment(java.lang.String)
setCommentURL
public void setCommentURL(String purpose)
Устанавливает URL комментария, описывающий назначение куки. URL комментария полезен, если браузер предоставляет куки пользователю. URL комментария поддерживается только RFC 2965.
- Параметры:
-
purpose-String, содержащий URL комментария для отображения пользователю - См. также:
getCommentURL()
getCommentURL
public String getCommentURL()
Возвращает URL комментария, описывающий назначение этой куки, или null , если куки нет URL комментария.
- Возвращает:
String, содержащий URL комментария, илиnull, если нет- См. также:
setCommentURL(java.lang.String)
setDiscard
public void setDiscard(boolean discard)
Указывает, должен ли пользовательский агент безусловно удалить куки. Это атрибут только RFC 2965.
- Параметры:
-
discard-trueуказывает на безусловное удаление куки - См. также:
getDiscard()
getDiscard
public boolean getDiscard()
Возвращает атрибут удаления куки
- Возвращает:
boolean, представляющий атрибут удаления этой куки- См. также:
setDiscard(boolean)
setPortlist
public void setPortlist(String ports)
Указывает список портов куки, который ограничивает порт(ы), на которые куки может быть отправлена обратно в заголовке Cookie.
- Параметры:
-
ports-String, определяющий список портов, который представляет собой серию цифр, разделённых запятыми - См. также:
getPortlist()
getPortlist
public String getPortlist()
Возвращает атрибут списка портов куки
- Возвращает:
String, содержащий список портов, илиnull, если нет- См. также:
setPortlist(java.lang.String)
setDomain
public void setDomain(String pattern)
Устанавливает домен, в котором эта кука должна быть представлена.
Формат имени домена задан в RFC 2965. Имя домена начинается с точки (.foo.com) и означает, что кука доступна серверам в указанной зоне DNS (например, www.foo.com, но не a.b.foo.com). По умолчанию куки возвращаются только серверу, который их отправил.
- Параметры:
-
pattern-String, содержащий имя домена, в котором эта кука доступна; формат соответствует RFC 2965 - См. также:
getDomain()
getDomain
public String getDomain()
Возвращает имя домена, установленное для этой куки. Формат имени домена задан RFC 2965.
- Возвращает:
String, содержащий имя домена- См. также:
setDomain(java.lang.String)
setMaxAge
public void setMaxAge(long expiry)
Устанавливает максимальный срок действия куки в секундах.
Положительное значение указывает, что кука истечёт через указанное количество секунд. Обратите внимание, что значение — это максимальный срок действия, когда кука истечёт, а не текущий срок действия куки.
Отрицательное значение означает, что кука не сохраняется постоянно и будет удалена при выходе веб-браузера. Нулевое значение приводит к удалению куки.
- Параметры:
-
expiry- целое число, указывающее максимальный срок действия куки в секундах; если ноль, кука должна быть удалена немедленно; в противном случае максимальный срок действия куки не указан. - См. также:
getMaxAge()
getMaxAge
public long getMaxAge()
Возвращает максимальный срок действия куки в секундах. По умолчанию -1, указывая, что кука сохранится до закрытия браузера.
- Возвращает:
- Целое число, указывающее максимальный срок действия куки в секундах
- См. также:
setMaxAge(long)
setPath
public void setPath(String uri)
Устанавливает путь для куки, на который клиент должен вернуть куки.
Кука видна для всех страниц в указанном каталоге и всех страниц в подкаталогах этого каталога. Путь куки должен включать сервлет, который установил куки, например, /catalog, что делает куки видимой для всех каталогов на сервере под /catalog.
Для получения дополнительной информации о назначении имён путей для куки см. RFC 2965 (доступен в Интернете).
- Параметры:
-
uri-String, указывающий путь - См. также:
getPath()
getPath
public String getPath()
Возвращает путь на сервере, на который браузер возвращает эту куки. Кука видна для всех подпутей на сервере.
- Возвращает:
String, указывающий путь, содержащий имя сервлета, например, /catalog- См. также:
setPath(java.lang.String)
setSecure
public void setSecure(boolean flag)
Указывает, должна ли кука отправляться только с помощью защищённого протокола, такого как HTTPS или SSL.
Значение по умолчанию — false.
- Параметры:
-
flag- Еслиtrue, кука может быть отправлена только по защищённому протоколу, например HTTPS. Еслиfalse, она может быть отправлена по любому протоколу. - См. также:
getSecure()
getSecure
public boolean getSecure()
Возвращает true , если отправка этой куки должна быть ограничена защищённым протоколом, или false , если она может быть отправлена по любому протоколу.
- Возвращает:
-
false, если кука может быть отправлена по любому стандартному протоколу; в противном случае,true - См. также:
setSecure(boolean)
getName
public String getName()
Возвращает имя куки. Имя нельзя изменить после создания.
- Возвращает:
String, указывающее имя куки
setValue
public void setValue(String newValue)
Присваивает новое значение куки после создания куки. Если вы используете двоичное значение, вы можете использовать кодирование BASE64.
Для куки версии 0 значения не должны содержать пробелы, скобки, знаки равенства, запятые, двойные кавычки, косые черты, вопросительные знаки, знаки «@», двоеточия и точки с запятой. Пустые значения могут вести себя по-разному в разных браузерах.
- Параметры:
-
newValue-String, указывающее новое значение - См. также:
getValue()
getValue
public String getValue()
Возвращает значение куки.
- Возвращает:
String, содержащее текущее значение куки- См. также:
setValue(java.lang.String)
getVersion
public int getVersion()
Возвращает версию протокола, с которой соответствует эта кука. Версия 1 соответствует RFC 2965/2109, а версия 0 — оригинальной спецификации куки, разработанной компанией Netscape. Куки, предоставленные браузером, используют и идентифицируют версию куки браузера.
- Возвращает:
- 0, если кука соответствует оригинальной спецификации Netscape; 1, если кука соответствует RFC 2965/2109
- См. также:
setVersion(int)
setVersion
public void setVersion(int v)
Устанавливает версию протокола куки, с которой соответствует эта кука. Версия 0 соответствует оригинальной спецификации куки Netscape. Версия 1 соответствует RFC 2965/2109.
- Параметры:
-
v- 0, если кука должна соответствовать оригинальной спецификации Netscape; 1, если кука должна соответствовать RFC 2965/2109 - Исключения:
-
IllegalArgumentException- еслиvни 0, ни 1 - См. также:
getVersion()
isHttpOnly
public boolean isHttpOnly()
Возвращает true , если эта кука содержит атрибут HttpOnly. Это означает, что кука недоступна для скриптовых движков, таких как javascript.
- Возвращает:
-
trueесли этот cookie должен рассматриваться как HTTPOnly - См. также:
setHttpOnly(boolean)
setHttpOnly
public void setHttpOnly(boolean httpOnly)
Указывает, должен ли cookie рассматриваться как HTTP Only. Если установлено значение true, это означает, что cookie не должен быть доступен для скриптовых движков, таких как javascript.
- Параметры:
-
httpOnly- еслиtrueсделать cookie HTTP только, т.е. видимым только как часть HTTP-запроса. - См. также:
isHttpOnly()
domainMatches
public static boolean domainMatches(String domain,
String host) Утилитарный метод для проверки того, соответствует ли имя хоста домену.
Эта концепция описана в спецификации cookie. Для понимания концепции необходимо сначала определить некоторые термины:
эффективное имя хоста = имя хоста, если имя хоста содержит точку
или = имя_хоста.local, если нет
Имя хоста А соответствует домену имени хоста Б, если:
- их строки имен хостов совпадают при сравнении строк; или
- А — строка HDN и имеет вид NB, где N — непустая строка имени, Б имеет вид .B', и B' — строка HDN. (Таким образом, x.y.com соответствует .Y.com, но не Y.com.)
Хост не находится в домене (RFC 2965, раздел 3.3.2), если:
- Значение атрибута Domain не содержит вложенных точек и не равно .local.
- Эффективное имя хоста, полученное из имени хоста запроса, не соответствует атрибуту Domain.
- Имя хоста запроса — 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()
Создаёт строковое представление заголовка cookie, которое соответствует определению соответствующей спецификации cookie, но без начального маркера "Cookie:".
- Переопределяет:
-
toStringв классеObject - Возвращает:
- строковая форма cookie. Строка имеет определённый формат
equals
public boolean equals(Object obj)
Проверяет равенство двух HTTP-cookie.
Результат равен true только если два cookie происходят из одного домена (без учёта регистра), имеют одинаковое имя (без учёта регистра) и одинаковый путь (с учётом регистра).
- Переопределяет:
-
equalsв классеObject - Параметры:
-
obj- объект-ссылка для сравнения. - Возвращает:
-
trueесли два HTTP-cookie равны; в противном случае,false - См. также:
-
Object.hashCode(),HashMap
hashCode
public int hashCode()
Возвращает хэш-код этого HTTP-cookie. Результат — сумма хэш-кода трёх значимых компонентов этого cookie: имени, домена и пути. То есть, хэш-код — это значение выражения:
getName().toLowerCase().hashCode()
+ getDomain().toLowerCase().hashCode()
+ getPath().hashCode()
- Переопределяет:
-
hashCodeв классеObject - Возвращает:
- хэш-код этого HTTP-cookie
- См. также:
-
Object.equals(java.lang.Object),System.identityHashCode(java.lang.Object)
clone
public Object clone()
Создаёт и возвращает копию этого объекта.
© 1993, 2020, 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.
https://docs.oracle.com/en/java/javase/11/docs/api/java.base/java/net/HttpCookie.html