Класс HttpCookie
- java.lang.Object
-
- java.net.HttpCookie
- Все реализованные интерфейсы:
- Cloneable
public final class HttpCookie extends Object implements Cloneable
Объект HttpCookie представляет собой HTTP-cookie, который переносит информацию о состоянии между сервером и пользовательским агентом. 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) Создает cookie со заданным именем и значением. |
Методы
| Модификатор и тип | Метод и описание |
|---|---|
Object |
clone() Создает и возвращает копию этого объекта. |
static boolean |
domainMatches(String domain,
String host) Утилитарный метод для проверки, находится ли имя хоста в домене. |
boolean |
equals(Object obj) Проверяет равенство двух HTTP-cookies. |
String |
getComment() Возвращает комментарий, описывающий назначение этого cookie, или |
String |
getCommentURL() Возвращает URL комментария, описывающего назначение этого cookie, или |
boolean |
getDiscard() Возвращает атрибут discard 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) Создает cookies из строки заголовка 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- aStringspecifying the name of the cookie -
value- aStringspecifying the value of the cookie - Исключения:
-
IllegalArgumentException- if the cookie name contains illegal characters -
NullPointerException- ifnameisnull - См. также:
-
setValue(java.lang.String),setVersion(int)
Краткое описание методов
parse
public static List<HttpCookie> parse(String header)
Создает cookie из строки заголовка set-cookie или set-cookie2. Синтаксис set-cookie2, указанный в разделе 3.2.2 RFC 2965, указывает, что одна строка заголовка может содержать более одного определения cookie, поэтому это статический вспомогательный метод, а не другой конструктор.
- Параметры:
-
header- aStringspecifying the set-cookie header. The header should start with "set-cookie", or "set-cookie2" token; or it should have no leading token at all. - Возвращает:
- a List of cookie parsed from header line string
- Исключения:
-
IllegalArgumentException- if header string violates the cookie specification's syntax or the cookie name contains illegal characters. -
NullPointerException- if the header string isnull
hasExpired
public boolean hasExpired()
Сообщает, истек ли срок действия этого HTTP-cookie или нет.
- Возвращает:
-
trueto indicate this HTTP cookie has expired; otherwise,false
setComment
public void setComment(String purpose)
Указывает комментарий, описывающий назначение cookie. Комментарий полезен, если браузер представляет cookie пользователю. Комментарии не поддерживаются cookie Netscape версии 0.
- Параметры:
-
purpose- aStringspecifying the comment to display to the user - См. также:
getComment()
getComment
public String getComment()
Возвращает комментарий, описывающий назначение этого cookie, или null, если у cookie нет комментария.
- Возвращает:
- a
Stringcontaining the comment, ornullif none - См. также:
setComment(java.lang.String)
setCommentURL
public void setCommentURL(String purpose)
Указывает URL-адрес комментария, описывающий назначение cookie. URL-адрес комментария полезен, если браузер представляет cookie пользователю. URL-адрес комментария — только RFC 2965.
- Параметры:
-
purpose- aStringspecifying the comment URL to display to the user - См. также:
getCommentURL()
getCommentURL
public String getCommentURL()
Возвращает URL-адрес комментария, описывающий назначение этого cookie, или null, если у cookie нет URL-адреса комментария.
- Возвращает:
- a
Stringcontaining the comment URL, ornullif none - См. также:
setCommentURL(java.lang.String)
setDiscard
public void setDiscard(boolean discard)
Указывает, должен ли пользовательский агент безусловно отбросить cookie. Это атрибут только RFC 2965.
- Параметры:
-
discard-trueindicates to discard cookie unconditionally - См. также:
getDiscard()
getDiscard
public boolean getDiscard()
Возвращает атрибут discard cookie
- Возвращает:
- a
booleanto represent this cookie's discard attribute - См. также:
setDiscard(boolean)
setPortlist
public void setPortlist(String ports)
Указывает список портов cookie, который ограничивает порт(ы), на которые cookie может быть отправлен обратно в заголовке Cookie.
- Параметры:
-
ports- aStringspecify the port list, which is comma separated series of digits - См. также:
getPortlist()
getPortlist
public String getPortlist()
Возвращает атрибут списка портов cookie
- Возвращает:
- a
Stringcontains the port list ornullif none - См. также:
setPortlist(java.lang.String)
setDomain
public void setDomain(String pattern)
Указывает домен, в котором должен быть представлен этот cookie.
Форма доменного имени указана в RFC 2965. Доменное имя начинается с точки (.foo.com) и означает, что cookie виден серверам в указанной зоне системы доменных имен (DNS) (например, www.foo.com, но не a.b.foo.com). По умолчанию cookie возвращаются только серверу, который их отправил.
- Параметры:
-
pattern- aStringcontaining the domain name within which this cookie is visible; form is according to RFC 2965 - См. также:
getDomain()
getDomain
public String getDomain()
Возвращает имя домена, установленное для этого cookie. Форма доменного имени устанавливается RFC 2965.
- Возвращает:
- a
Stringcontaining the domain name - См. также:
setDomain(java.lang.String)
setMaxAge
public void setMaxAge(long expiry)
Устанавливает максимальный срок действия cookie в секундах.
Положительное значение указывает, что срок действия cookie истечет через столько секунд. Обратите внимание, что значение является максимальным возрастом, когда срок действия cookie истечет, а не текущим возрастом cookie.
Отрицательное значение означает, что cookie не хранится постоянно и будет удалено при выходе из веб-браузера. Нулевое значение приводит к удалению cookie.
- Параметры:
-
expiry- an integer specifying the maximum age of the cookie in seconds; if zero, the cookie should be discarded immediately; otherwise, the cookie's max age is unspecified. - См. также:
getMaxAge()
getMaxAge
public long getMaxAge()
Возвращает максимальный срок действия cookie, указанный в секундах. По умолчанию, -1, указывающий, что cookie будет сохраняться до выключения браузера.
- Возвращает:
- an integer specifying the maximum age of the cookie in seconds
- См. также:
setMaxAge(long)
setPath
public void setPath(String uri)
Указывает путь для cookie, в который клиент должен вернуть cookie.
Cookie виден всем страницам в указанном вами каталоге и всем страницам в подкаталогах этого каталога. Путь cookie должен включать сервлет, который установил cookie, например, /catalog, что делает cookie видимым для всех каталогов на сервере под /catalog.
Обратитесь к RFC 2965 (доступно в Интернете) для получения дополнительной информации об установке имен путей для cookie.
- Параметры:
-
uri- aStringspecifying a path - См. также:
getPath()
getPath
public String getPath()
Возвращает путь на сервере, в который браузер возвращает этот cookie. Cookie виден всем подпутям на сервере.
- Возвращает:
- a
Stringspecifying a path that contains a servlet name, for example, /catalog - См. также:
setPath(java.lang.String)
setSecure
public void setSecure(boolean flag)
Указывает, следует ли отправлять cookie только с использованием защищенного протокола, такого как HTTPS или SSL.
Значение по умолчанию — false.
- Параметры:
-
flag- Iftrue, the cookie can only be sent over a secure protocol like HTTPS. Iffalse, it can be sent over any protocol. - См. также:
getSecure()
getSecure
public boolean getSecure()
Возвращает true, если отправка этого cookie должна быть ограничена защищенным протоколом, или false, если его можно отправлять с помощью любого протокола.
- Возвращает:
-
falseif the cookie can be sent over any standard protocol; otherwise,true - См. также:
setSecure(boolean)
getName
public String getName()
Возвращает имя cookie. Имя нельзя изменить после создания.
- Возвращает:
- a
Stringspecifying the cookie's name
setValue
public void setValue(String newValue)
Присваивает новое значение cookie после создания cookie. Если вы используете двоичное значение, вы можете использовать кодирование BASE64.
В cookie версии 0 значения не должны содержать пробелы, квадратные скобки, круглые скобки, знаки равенства, запятые, двойные кавычки, косые черты, вопросительные знаки, символы «@», двоеточия и точки с запятой. Пустые значения могут вести себя не одинаково во всех браузерах.
- Параметры:
-
newValue- aStringspecifying the new value - См. также:
getValue()
getValue
public String getValue()
Возвращает значение cookie.
- Возвращает:
- объект
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, если данная куки должна считаться HTTPOnly - См. также:
setHttpOnly(boolean)
setHttpOnly
public void setHttpOnly(boolean httpOnly)
Указывает, должна ли куки считаться HTTP Only. Если установлено значение true , это означает, что куки недоступна для скриптовых движков, таких как javascript.
- Параметры:
-
httpOnly- еслиtrueсделать куки HTTP Only, т.е. она будет видна только как часть запроса HTTP. - См. также:
isHttpOnly()
domainMatches
public static boolean domainMatches(String domain,
String host) Вспомогательный метод для проверки, принадлежит ли имя хоста определённому домену.
Этот концепция описана в спецификации куки. Для понимания концепции, необходимо сначала определить некоторые термины:
эффективный имя хоста = имя хоста, если имя хоста содержит точку
или = имя хоста.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.
- Параметры:
-
domain- имя домена для проверки имени хоста -
host- имя хоста для проверки - Возвращает:
-
true, если они соответствуют домену;false, если нет
toString
public String toString()
Создаёт строковое представление заголовка куки, соответствующее определению спецификации куки, но без ведущего "Cookie:".
- Переопределяет:
-
toStringв классеObject - Возвращает:
- строковое представление куки в определённом формате
equals
public boolean equals(Object obj)
Проверяет равенство двух HTTP-куки.
Результат равен true только если две куки пришли с одного домена (регистр не учитывается), имеют одинаковое имя (регистр не учитывается) и одинаковый путь (регистр учитывается).
- Переопределяет:
-
equalsв классеObject - Параметры:
-
obj- объект-ссылка для сравнения. - Возвращает:
-
true, если две HTTP-куки равны; в противном случае,false - См. также:
-
Object.hashCode(),HashMap
hashCode
public int hashCode()
Возвращает хэш-код этой HTTP-куки. Результат – сумма хэш-кодов трёх важных компонентов куки: имени, домена и пути. То есть, хэш-код – значение выражения:
getName().toLowerCase().hashCode()
+ getDomain().toLowerCase().hashCode()
+ getPath().hashCode()
- Переопределяет:
-
hashCodeв классеObject - Возвращает:
- хэш-код этой HTTP-куки
- См. также:
-
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.