先说一个误区:
1.Cookie的格式有2个不同的版本,第一个版本,我们称为Cookie Version
0,是最初由Netscape公司制定的,也被几乎所有的浏览器支持。而较新的版本,Cookie Version 1,则是根据RFC
2109文档制定的。为了确保兼容性,JAVA规定,前面所提到的涉及Cookie的操作都是针对旧版本的Cookie进行的。而新版本的Cookie目
前还不被Javax.servlet.http.Cookie包所支持。
以上提到的仅仅针对javax.servlet.http.Cookie,反编译源码可以看到private int version = 0;但是java还有其他的cookie类,是可以支持到version1的。
”javax.servlet.http.Cookie“,通常我们会使用这个类来处理本地存储的cookie,但是如下firebug抓包可以看到,request中的cookie对象是一整个string,这里就涉及到解析cookie的问题。(tomcat源码中有处理request中cookie[]的方法),
另外java本身有一个类java.net.HttpCookie,~~~根据官方doc文档显示,java6里面其实已经支持各种规范的cookie格式,但在创建的时候,得注意设置version版本
public final class HttpCookie extends Object
implements Cloneable
HttpCookie 对象表示一个 http cookie,该 cookie 带有服务器和用户代理之间的状态信息。广泛采用 Cookie 来创建有状态 (stateful) 会话。
有 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
并且这个类的方法parse可以直接用来解析request的cookie对象得到cookie数组,即req.getHeader("cookie")
public static List<HttpCookie> parse(String header)
在这个类里面有一个guessCookieVersion方法,也大致说明了几个版本间的主要区别:这里可以看到其实expires属性仅仅是Netscape版本使用而已,并非所有cookie都有这个玩意:)
/*
* try to guess the cookie version through set-cookie header string
*/
private static int guessCookieVersion(String header) {
int version = 0;
header = header.toLowerCase();
if (header.indexOf("expires=") != -1) {
// only netscape cookie using 'expires'
version = 0;
} else if (header.indexOf("version=") != -1) {
// version is mandatory for rfc 2965/2109 cookie
version = 1;
} else if (header.indexOf("max-age") != -1) {
// rfc 2965/2109 use 'max-age'
version = 1;
} else if (startsWithIgnoreCase(header, SET_COOKIE2)) {
// only rfc 2965 cookie starts with 'set-cookie2'
version = 1;
}
return version;
}
- 大小: 69.5 KB
分享到:
相关推荐
在Java编程语言中,Cookie是一种小型文本文件,用于在客户端和服务器之间传递信息,特别是保持用户状态和会话。本文将深入讲解Java中Cookie的使用方法,包括创建、设置、读取和删除Cookie,以及其在Web应用程序中的...
### JAVA中Cookie的使用详解 #### 一、Cookie的基本概念 在Web开发中,Cookie是一种在客户端存储数据的方式,主要用于追踪用户状态。当用户访问一个网站时,服务器可以在客户端(通常是浏览器)上创建一个名为...
当客户端浏览器再次访问该网站时,会把Cookie信息一起发送到服务器端,这样服务器就可以根据Cookie中的信息进行个性化处理。 #### 二、Cookie的创建与使用 ##### 1. 创建Cookie对象 在Java中,创建Cookie非常简单...
在Java Web开发中,Cookie、Session和验证码是三个非常重要的概念,它们对于用户身份验证、会话管理以及防止恶意自动操作起着关键作用。本文将深入探讨这些概念,并通过实例来展示它们在实际项目中的应用。 首先,...
- **安全性**:Cookie中不应存储敏感信息,因为它们会在每次HTTP请求中被发送。 - **隐私策略**:用户有权禁用或删除Cookie,开发者应考虑无Cookie情况下的处理方式。 - **同源策略**:Cookie遵循同源策略,只能...
Java 模拟Cookie 登陆简单操作示例 在本文中,我们将介绍 Java 模拟 Cookie 登陆的简单操作,结合实例...本示例可以帮助开发者快速了解 Java 模拟 Cookie 登陆的实现原理和实现方法,为实际开发中提供了有价值的参考。
本文将详细探讨Cookie和Session的概念、区别以及在Java Web应用中的应用。 Cookie和Session是Java Web应用中两种重要的状态管理机制,它们各有特点和适用场景。合理选择和使用这两种机制,可以提高Web应用的用户体验...
在 Java 中建立 Cookie 非常简单,主要通过 HttpServletResponse 对象的 addCookie() 方法来实现。下面是一个简单的示例代码: ```java HttpServletResponse response; Cookie cookie = new Cookie("cookiename", ...
- **验证Token**:用户再次访问时,服务器读取Cookie中的Token,与数据库中的信息对比,验证通过则自动登录。 6. **注意事项** - 遵循最佳实践,限制Cookie的有效期,不要让其永久存在。 - 对于敏感信息,除了...
Java 中 Cookie 被禁用后 Session 追踪问题 在 Java Web 开发中,Session 是一个非常重要的概念,它用于存储用户的状态信息。但是,当用户禁用 Cookie 时,Session 的追踪就会出现问题。本文将详细介绍 Java 中 ...
Java中的Cookie操作是Web开发中常见的一种技术,用于在客户端和服务器之间传递状态信息。Cookie是一种小型文本文件,由服务器发送到用户的浏览器,并由浏览器在后续请求中返回给服务器。以下将详细介绍Java如何进行...
这个Session ID会被存储在一个Cookie中,每当用户发起新请求时,都会带上这个Cookie。服务器根据Session ID来查找对应的Session对象,并从中读取或写入用户的状态信息。 ##### 3. Java中Session的实现 在Java Web...
### JAVA之cookie与session #### 一、Cookie与Session的概念 **Cookie** 与 **Session** 是两种在 Web 开发中用于跟踪用户会话的重要技术。它们的主要目标是在客户端和服务端之间保持状态。 - **Cookie** 机制...
在互联网应用中,HTTP协议是一个无状态的协议,这意味着Web服务器...然而,开发者也需要注意Cookie的安全性,例如不要在Cookie中存储敏感信息,并且应当对所有传输的Cookie数据进行加密处理,以免造成用户隐私泄露。
1. **安全性**: 由于Cookie数据是存储在客户端的,因此需要注意保护敏感信息,避免将其存储在Cookie中。 2. **大小限制**: 浏览器对单个Cookie的大小有限制,通常不超过4KB。 3. **隐私问题**: 使用Cookie时应考虑...
本示例将详细介绍如何在Java Servlet中使用Cookie。 首先,我们需要了解Cookie的基本概念。Cookie是由服务器发送到浏览器,并由浏览器存储的一小段文本信息。当浏览器发起新的请求时,它会自动将该域下的所有Cookie...
标题“Discuz与Java通过Cookie共享登录”涉及的是在Web开发中如何实现不同系统间用户登录状态的共享,特别是Discuz论坛系统与基于Java的应用之间的交互。Discuz是一款流行的开源社区论坛软件,而Java是一种广泛使用...
标题"aaaaaa.zip_cookie_cookie java_java cookie"以及描述中的内容都提到了Cookie在Java Web应用中的关键作用。 **Cookie的基本概念** 1. **定义**:Cookie是由服务器发送到用户浏览器并保存在本地的一小块数据,...
JavaScript(JS)Cookie和Java Cookie是Web开发中用于存储客户端数据的两种常见方式,而正则表达式(Regex)在处理字符串和数据匹配时扮演着重要角色。下面将详细阐述这三个知识点及其应用。 首先,JavaScript ...