Класс 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 формы синтаксиса.
- С тех пор:
- 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() |
Возвращает атрибут удаления 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<HttpCookie> |
parse |
Создает cookie из строки заголовка set-cookie или set-cookie2. |
void |
setComment |
Устанавливает комментарий, описывающий назначение cookie. |
void |
setCommentURL |
Устанавливает URL комментария, описывающий назначение cookie. |
void |
setDiscard |
Указывает, должен ли пользовательский агент безусловно удалить cookie. |
void |
setDomain |
Указывает домен, в рамках которого должен быть представлен этот cookie. |
void |
setHttpOnly |
Указывает, должен ли cookie считаться HTTP-Only. |
void |
setMaxAge |
Устанавливает максимальный срок действия cookie в секундах. |
void |
setPath |
Указывает путь для cookie, по которому клиент должен вернуть cookie. |
void |
setPortlist |
Указывает список портов cookie, которые ограничивают порты, в которые cookie может быть отправлен обратно в заголовке Cookie. |
void |
setSecure |
Указывает, должен ли cookie отправляться только по защищенному протоколу, такому как HTTPS или SSL. |
void |
setValue |
Присваивает новое значение cookie после создания cookie. |
void |
setVersion |
Устанавливает версию протокола cookie, с которой соответствует этот cookie. |
String |
toString() |
Строковое представление заголовка cookie, которое соответствует определению соответствующей спецификации cookie, но без начального токена "Cookie:". |
Подробное описание конструкторов
HttpCookie
public HttpCookie(String name, String value)
Имя должно соответствовать RFC 2965. Это означает, что оно может содержать только символы ASCII алфавитно-цифрового набора и не может содержать запятые, точки с запятой или пробелы, а также не может начинаться с символа $. Имя cookie нельзя изменить после создания.
Значение может быть любым, которое сервер выбирает для отправки. Его значение, вероятно, интересует только сервер. Значение cookie можно изменить после создания с помощью метода setValue.
По умолчанию cookie создаются в соответствии со спецификацией RFC 2965 для cookie. Версию можно изменить с помощью метода 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()
- Возвращает:
-
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 не хранится постоянно и будет удалён при выходе браузера. Ноль приводит к удалению cookie.
- Параметры:
-
expiry- целое число, определяющее максимальный срок действия cookie в секундах; если ноль, cookie должен быть немедленно удалён; иначе максимальный срок действия cookie не указан. - См. также:
getMaxAge
public long getMaxAge()
-1, что cookie сохраняется до закрытия браузера.- Возвращает:
- Целое число, определяющее максимальный срок действия cookie в секундах
- См. также:
setPath
public void setPath(String uri)
Cookie доступен для всех страниц в указанном каталоге и для всех страниц в подкаталогах этого каталога. Путь cookie должен содержать сервлет, который установил cookie, например, /catalog, что делает cookie доступным для всех каталогов на сервере под /catalog.
Обратитесь к RFC 2965 (доступен в Интернете) для получения дополнительной информации о настройке имён путей для cookie.
- Параметры:
-
uri-String, определяющий путь - См. также:
getPath
public String getPath()
- Возвращает:
String, определяющий путь, который содержит имя сервлета, например, /catalog- См. также:
setSecure
public void setSecure(boolean flag)
Значение по умолчанию — false.
- Parameters:
-
flag- Еслиtrue, cookie может быть отправлен только по защищённому протоколу, например, HTTPS. Еслиfalse, он может быть отправлен по любому протоколу. - See Also:
getSecure
public boolean getSecure()
true, если отправка этого cookie должна быть ограничена защищённым протоколом, или false, если он может быть отправлен по любому протоколу.- Returns:
-
falseесли cookie может быть отправлен по любому протоколу; в противном случае,true - See Also:
getName
public String getName()
- Returns:
- строку
String, содержащую имя cookie
setValue
public void setValue(String newValue)
Для cookie версии 0 значения не должны содержать пробелов, скобок, знаков равенства, запятых, двойных кавычек, слешей, вопросительных знаков, символов @, двоеточий и точек с запятой. Пустые значения могут вести себя по-разному в разных браузерах.
- Parameters:
-
newValue- строкуString, содержащую новое значение - See Also:
getValue
public String getValue()
- Returns:
- строку
String, содержащую текущее значение cookie - See Also:
getVersion
public int getVersion()
- Returns:
- 0, если cookie соответствует оригинальной спецификации Netscape; 1, если cookie соответствует RFC 2965/2109
- See Also:
setVersion
public void setVersion(int v)
- Parameters:
-
v- 0, если cookie должен соответствовать оригинальной спецификации Netscape; 1, если cookie должен соответствовать RFC 2965/2109 - Throws:
-
IllegalArgumentException- еслиvне равно ни 0, ни 1 - See Also:
isHttpOnly
public boolean isHttpOnly()
true, если этот cookie содержит атрибут HttpOnly. Это означает, что к cookie не должен иметь доступ скриптовый движок, например, javascript.- Returns:
-
trueесли этот cookie должен рассматриваться как HTTPOnly - See Also:
setHttpOnly
public void setHttpOnly(boolean httpOnly)
true, это означает, что к cookie не должен иметь доступ скриптовый движок, например, javascript.- Parameters:
-
httpOnly- еслиtrueсделать cookie HTTP-только, т.е. видимым только в рамках HTTP-запроса. - See Also:
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 sec. 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.
- Parameters:
-
domain- доменное имя для проверки имени хоста -
host- проверяемое имя хоста - Returns:
-
trueесли они совпадают по домену;falseесли нет
toString
public String toString()
- Overrides:
-
toStringв классеObject - Returns:
- строковое представление cookie
equals
public boolean equals(Object obj)
Результатом является true только если два cookie происходят из одного домена (без учёта регистра), имеют одинаковое имя (без учёта регистра) и одинаковый путь (с учётом регистра).
- Overrides:
-
equalsв классеObject - Parameters:
-
obj- ссылка на объект для сравнения. - Returns:
-
trueесли два HTTP cookie равны; иначе,false - See Also:
hashCode
public int hashCode()
getName().toLowerCase().hashCode()
+ getDomain().toLowerCase().hashCode()
+ getPath().hashCode()
- Overrides:
-
hashCodeв классеObject - Returns:
- хэш-код этого HTTP cookie
- See Also:
clone
public Object clone()
- Overrides:
-
cloneв классеObject - Returns:
- копию этого HTTP cookie
- See Also:
© 1993, 2021, 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/17/docs/api/java.base/java/net/HttpCookie.html