Класс 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 |
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, но без ведущего маркера "Cookie:". |
Подробное описание конструкторов
HttpCookie
public HttpCookie(String name, String value)
Имя должно соответствовать RFC 2965. Это означает, что оно может содержать только символы ASCII, а также латинские буквы и цифры и не может содержать запятые, точки с запятой, пробелы или начинаться с символа $. Имя куки после создания изменить нельзя.
Значение может быть любым, которое сервер выбирает для отправки. Его значение, вероятно, интересно только серверу. Значение куки можно изменить после создания с помощью метода setValue.
По умолчанию куки создаются в соответствии со спецификацией RFC 2965 для куки. Версию можно изменить с помощью метода setVersion.
- Параметры:
-
name-String, определяющий имя куки -
value-String, определяющий значение куки - Исключения:
-
IllegalArgumentException- если имя куки содержит недопустимые символы -
NullPointerException- еслиnameравноnull - См. также:
Подробное описание методов
parse
public static List<HttpCookie> parse(String header)
- Параметры:
-
header-String, определяющий заголовок set-cookie. Заголовок должен начинаться с маркера "set-cookie" или "set-cookie2"; или он вообще не должен иметь ведущего маркера. - Возвращает:
- список куки, разобранных из строки заголовка
- Исключения:
-
IllegalArgumentException- если строка заголовка нарушает синтаксис спецификации куки или имя куки содержит недопустимые символы. -
NullPointerException- если строка заголовкаnull
hasExpired
public boolean hasExpired()
- Возвращает:
-
trueдля указания того, что срок действия HTTP-куки истек; в противном случае,false
setComment
public void setComment(String purpose)
- Параметры:
-
purpose-String, содержащий комментарий для отображения пользователю - См. также:
getComment
public String getComment()
null, если куки нет комментария.- Возвращает:
String, содержащий комментарий, илиnull, если нет- См. также:
setCommentURL
public void setCommentURL(String purpose)
- Параметры:
-
purpose-String, содержащий URL-адрес комментария для отображения пользователю - См. также:
getCommentURL
public String getCommentURL()
null, если у куки нет URL-адреса комментария.- Возвращает:
String, содержащий URL-адрес комментария, илиnull, если нет- См. также:
setDiscard
public void setDiscard(boolean discard)
- Параметры:
-
discard-trueуказывает на то, что куки следует безвозвратно удалить - См. также:
getDiscard
public boolean getDiscard()
- Возвращает:
boolean, представляющий атрибут discard этой куки- См. также:
setPortlist
public void setPortlist(String ports)
- Параметры:
-
ports-String, определяющий список портов, который представляет собой запятыми разделенный ряд цифр - См. также:
getPortlist
public String getPortlist()
- Возвращает:
String, содержащий список портов, илиnull, если список отсутствует- См. также:
setDomain
public void setDomain(String pattern)
Формат доменного имени задаётся RFC 2965. Доменное имя начинается с точки (.foo.com) и означает, что куки видна серверам в указанной зоне доменных имён (например, www.foo.com, но не a.b.foo.com). По умолчанию куки возвращаются только серверу, который их отправил.
- Параметры:
-
pattern-String, содержащий доменное имя, в рамках которого эта куки видна; формат соответствует RFC 2965 - См. также:
getDomain
public String getDomain()
- Возвращает:
String, содержащий доменное имя- См. также:
setMaxAge
public void setMaxAge(long expiry)
Положительное значение указывает, что куки истечёт через заданное количество секунд. Обратите внимание, что значение является максимальным сроком действия куки, когда она истечёт, а не текущим сроком действия куки.
Отрицательное значение означает, что куки не хранится постоянно и будет удалена при выходе веб-браузера. Нулевое значение приводит к удалению куки.
- Параметры:
-
expiry- целое число, указывающее максимальный срок действия куки в секундах; если ноль, куки должна быть удалена немедленно; в противном случае максимальный срок действия куки не определён. - См. также:
getMaxAge
public long getMaxAge()
-1, указывающий, что куки сохранится до закрытия браузера.- Возвращает:
- целое число, указывающее максимальный срок действия куки в секундах
- См. также:
setPath
public void setPath(String uri)
Куки видна всем страницам в указанном вами каталоге и всем страницам в подкаталогах этого каталога. Путь куки должен включать сервлет, который установил куки, например, /catalog, что делает куки видимой для всех каталогов на сервере под /catalog.
Дополнительную информацию об установке имён путей для куки см. в RFC 2965 (доступно в интернете).
- Параметры:
-
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-only, т.е. видимым только как часть HTTP-запроса. - See Also:
domainMatches
public static boolean domainMatches(String domain, String host)
Эта концепция описана в спецификации cookie. Для понимания концепции необходимо сначала определить некоторые термины:
эффективное имя хоста = имя хоста, если имя хоста содержит точку
или = имя_хоста.local, если нет
Имя хоста A совпадает с доменным именем хоста B, если:
- их строки имени хоста совпадают в результате сравнения строк; или
- A является строкой HDN и имеет вид NB, где N — непустая строка имени, B имеет вид .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.
- 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()
hashCode().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, 2023, 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/21/docs/api/java.base/java/net/HttpCookie.html