Spec-Zone .ru
спецификации, руководства, описания, API
|
Поддержка Cookie включает следующие темы:
Cookie являются способом хранить данные на клиентской стороне. Они использовались экстенсивно для персонализации сайтов портала, отслеживания пользовательской настройки, и журналирования в веб-сайты. Для клиентов предприятия, использующих cookie в их веб-сайтах, поддержку cookie в Плагине Java и Java, веб-Запуск облегчает развертывание Java клиентской стороны.
Поддержка Cookie позволяет приложению Java пасовать назад cookie к веб-серверу если тот cookie, порожденный из веб-сервера. Это предоставляет серверу информацию о состоянии клиента.
Есть два основных типа cookie: Cookie Сеанса и Постоянные Cookie.
Cookie сеанса сохранены в памяти во время сеанса приложения или апплета. Cookie сеанса истекают, когда апплет или выходы приложения и автоматически удаляются. Эти cookie обычно хранят ID сеанса, который не лично идентифицируем пользователям, разрешая пользователю переместиться от страницы до страницы, не имея необходимость неоднократно входить в систему. Они широко используются коммерческими веб-сайтами (например, чтобы отследить элементы, которые потребитель добавил к магазинной тележке.)
Постоянные cookie сохранены в персистентном хранении и не удаляются, когда приложение выходит. Они удаляются, когда они истекают. Они могут сохранить пользовательские настройки для определенного веб-сайта, позволяя то предпочтение использоваться в будущих сеансах. Постоянные cookie могут использоваться, чтобы идентифицировать отдельных пользователей, таким образом, они могут использоваться веб-сайтами, чтобы проанализировать поведение перемещения пользователей в веб-сайте. Эти cookie могут также использоваться, чтобы предоставить информацию о числах посетителей, среднее время, проведенное на определенной странице, и общей производительности веб-сайта. Они обычно конфигурируются, чтобы отследить пользователей в течение длительного периода времени, в некоторых случаях многих лет в будущее.
Плагин Java и Java веб-обработка поддержки Запуска обоих типов cookie на всех платформах.
Плагин Java оказывает постоянную поддержку cookie, используя базовое хранилище cookie браузера. Когда это работает в Internet Explorer, хранилище cookie в IE используется; когда это работает в Mozilla, хранилище cookie в Mozilla используется. Поскольку у каждого браузера есть различная политика cookie, обрабатывающее cookie поведение зависит от управления cookie в браузере. Например, если браузер будет сконфигурирован, чтобы отклонить сторонние cookie, то политика применится к Плагину Java, когда это будет работать в этом браузере.
Java веб-Запуск оказывает постоянную поддержку cookie на Windows, используя хранилище cookie в Internet Explorer, и обрабатывающее cookie поведение, определяется управлением cookie в IE. На Linux/Солярисе Java веб-Запуск оказывает постоянную поддержку cookie, используя ее собственную реализацию хранилища cookie.
Есть несколько путей к приложению, чтобы переопределить обработку cookie по умолчанию. Четыре обрисовываются в общих чертах ниже.
void URLConnection.setRequestProperty(String key, String value)
Этот подход позволяет приложению устанавливать пользовательский заголовок cookie в URLConnection
прежде, чем сделать соединение.
URL url = new URL( "http://java.sun.com/" );
URLConnection conn = url.openConnection();
conn.setRequestProperty("Cookie", "foo=bar");
InputStream is = conn.getInputStream();
.....
Когда соединение делается, пользовательский cookie был бы отправлен серверу в заголовках запроса HTTP/HTTPS.
Map<String, List<String>> URLConnection.getHeaderFields()
После того, как соединение делается, сервер может возвратить cookie в заголовках ответа HTTP/HTTPS. Подход, обрисованный в общих чертах ниже, позволяет приложению получать значение cookie через URLConnection
.
URL url = new URL( "http://java.sun.com/" );
URLConnection conn = url.openConnection();
conn.connect();
.....
Map<String, List<String>> headers = conn.getHeaderFields();
List<String> values = headers.get("Set-Cookie");
String cookieValue = null;
for (Iterator iter = values.iterator(); iter.hasNext(); ) {
String v = values.next();
if (cookieValue == null)
cookieValue = v;
else
cookieValue = cookieValue + ";" + v;
}
После того, как соединение делается, сервер может возвратить cookie в заголовках ответа HTTP/HTTPS.
Map<String,List<String>> CookieHandler.get(URI uri, Map<String,List<String>> requestHeaders)
Этот подход позволяет приложению получать cookie сеанса / постоянные cookie для данного URL:
String retrieveCookie(URL url)
{
String cookieValue = null;
CookieHandler handler = CookieHandler.getDefault();
if (handler != null) {
Map<String, List<String>> headers = handler.get(url.toURI(), new Map<String, List<String>>());
List<String> values = headers.get("Cookie");
for (Iterator<String> iter=values.iterator(); iter.hasNext();) {
String v = iter.next();
if (cookieValue == null)
cookieValue = v;
else
cookieValue = cookieValue + ";" + v;
}
}
return cookieValue;
}
CookieHandler
абстракция хранения cookie браузера/системы, таким образом, дополнительное право доступа требуется для выполнения; вышеупомянутый код будет выполняться успешно, только если приложению доверяют.
void CookieHandler.put(URI uri, Map<String,List<String>> responseHeaders)
Этот подход позволяет приложению устанавливать cookie сеанса / постоянный cookie для данного URL:
void setCookie(URL url, String value)
{
CookieHandler handler = CookieHandler.getDefault();
if (handler != null) {
Map<String, List<String>> headers= new Map<String, List<String>>();
List<String> values = new List<String>();
values.add(value);
headers.put("Cookie", values);
handler.put(url.toURI(), headers);
}
}
CookieHandler
абстракция хранения cookie браузера/системы, таким образом, дополнительное право доступа требуется для выполнения; вышеупомянутый код будет выполняться успешно, только если приложению доверяют.