`
conkeyn
  • 浏览: 1523022 次
  • 性别: Icon_minigender_1
  • 来自: 厦门
社区版块
存档分类
最新评论

Cookie概念及使用

    博客分类:
  • Java
阅读更多

Cookie概念:
    Cookie的格式实际上是一段纯文本信息, 由服务器随着网页一起发送到客户端, 并保存在客户端硬盘中指定的目录的. 大家都传说Cookie会造成严重的安全威胁什么的, 其实不是这么回事情. 服务器读取Cookie的时候, 只能够读取到这个服务器相关的信息. 而且, 浏览器一般只允许存放300个Cookie, 每个站点最多存放20个, 而且, 每个Cookie的大小现在在4K, 根本不会占用多少空间. 并且, Cookie是有时效性质的. 例如, 设置了Cookie的存活时间为1分钟, 则一分钟后这个Cookie就会被浏览器删除

Cookie版本:
    目前有两个版本:
    版本0 : 由Netscape公司制定的,也被几乎所有的浏览器支持. Java中为了保持兼容性, 目前只支持到版本0, Cookie的内容中不能空格,方括号,圆括号,等于号(=),逗号,双引号,斜杠,问号,@符号,冒号,分号。
    版本1 : 根据RFC 2109文档制定的. 放宽了很多限制. 上面所限制的字符都可以使用. 但为了保持兼容性, 应该尽量避免使用这些特殊字符.

JSP中对Cookie的操作: 类型 方法名 方法解释
String getComment() 返回cookie中注释,如果没有注释的话将返回空值.
String getDomain() 返回cookie中Cookie适用的域名. 使用getDomain() 方法可以指示浏览器把Cookie返回给同 一域内的其他服务器,而通常Cookie只返回给与发送它的服务器名字完全相同的服务器。注意域名必须以点开始
int getMaxAge() 返回Cookie过期之前的最大时间,以秒计算。
String getName() 返回Cookie的名字
String getPath() 返回Cookie适用的路径。如果不指定路径,Cookie将返回给当前页面所在目录及其子目录下 的所有页面。
boolean getSecure() 如果浏览器通过安全协议发送cookies将返回true值,如果浏览器使用标准协议则返回false值。
String getValue() 返回Cookie的值。笔者也将在后面详细介绍getValue/setValue。
int getVersion() 返回Cookie所遵从的协议版本。
void setComment(String purpose) 设置cookie中注释
void setDomain(String pattern) 设置cookie中Cookie适用的域名 
void setMaxAge(int expiry) 以秒计算,设置Cookie过期时间。
void setPath(String uri) 指定Cookie适用的路径。
void setSecure(boolean flag) 指出浏览器使用的安全协议,例如HTTPS或SSL。
void setValue(String newValue) cookie创建后设置一个新的值。
void setVersion(int v) 设置Cookie所遵从的协议版本

一个简单的例子
1. 写入Cookie --- writecookie.jsp
-------------------------------------------------------------

<%@ page contentType="text/html; charset=ISO8859_1" %>
<%
  Cookie _cookie=new Cookie("user_delfancom", "delfan");
  _cookie.setMaxAge(30*60); // 设置Cookie的存活时间为30分钟
  response.addCookie(_cookie); // 写入客户端硬盘
  out.print("写Cookie完成");
%>
 

 

2. 读取Cookie.jsp --- readcookie.jsp
-------------------------------------------------------------

<%
  Cookie cookies[]=request.getCookies(); // 将适用目录下所有Cookie读入并存入cookies数组中
  Cookie sCookie=null;
  String sname=null;
  String name=null;
  if(cookies==null) // 如果没有任何cookie
    out.print("none any cookie");
  else
  {
    out.print(cookies.length + "<br>");
    for(int i=0;i<cookies.length; i++) // 循环列出所有可用的Cookie
    {
      sCookie=cookies[i];
      sname=sCookie.getName();
      name = sCookie.getValue();
      out.println(sname + "->" + name + "<br>");
    }
  }
%>
 

 

需要注意的两个问题:
1. Cookie有个适用路径的问题, 就是说如果 writecookie.jsp和readcookie.jsp要放在同意目录下, 如果不在同一目录下, 则写的时候需要设置路径,为readcookie.jsp所在的路径.
2. 读入Cookie数组的时候需要判断是否为空(null), 网上很多代码都没有写出这一点. 
 

=======================================================================

正常的cookie只能在一个应用中共享,即一个cookie只能由创建它的应用获得。
1.在同一应用服务器内共享的方法:设置cookie.setPath("/");
  设本机tomcat/webapp下面有两个应用:cas和webapp_b
                      
 1)原来在cas下面设置的cookie,在webapp_b下面获取不到,
  path默认是产生cookie的应用的路径。
 
 2)若在cas下面设置cookie的时候,增加一条:
   cookie.setPath("/");或者cookie.setPath("/webapp_b/");
   就可以在webapp_b下面获取到cas设置的cookie了。
 
 3) 此处的参数,是相对于应用服务器存放应用的文件夹的根目录而言的(比如tomcat下面的webapp),因此cookie.setPath("/"); 之后,可以在webapp文件夹下的所有应用共享cookie,而cookie.setPath("/webapp_b/"),是指cas应用设置的 cookie只能在webapp_b应用下的获得,即便是产生这个cookie的cas应用也不可以。
 4)设置cookie.setPath("/webapp_b/jsp/")的时候,只有在webapp_b/jsp下面可以获得cookie,在webapp_b下面但是在jsp文件夹外的都不能获得cookie。
 
 5)设置cookie.setPath("/webapp_b/"),是指在webapp_b下面才可以使用cookie,这样就不可以在产生cookie的应用cas下面获取cookie了。
 
 6)有多条cookie.setPath("XXX");语句的时候,起作用的以最后一条为准。
 
2.跨域共享cookie的方法:设置cookie.setDomain(".jszx.com");
 A机所在的域:home.langchao.com,A有应用cas
 B机所在的域:jszx.com,B有应用webapp_b

 1)在cas下面设置cookie的时候,增加cookie.setDomain(".jszx.com");,这样在webapp_b下面就可以取到cookie。
 
 2)这个参数必须以“.”开始。
 
 3)输入url访问webapp_b的时候,必须输入域名才能解析。比如说在A机器输入:http://lc-bsp.jszx.com:8080/webapp_b ,可以获取cas在客户端设置的cookie,而B机器访问本机的应用,输入:http://localhost:8080/webapp_b 则不可以获得cookie。
 
 4)设置了cookie.setDomain(".jszx.com");,还可以在默认的home.langchao.com下面共享。

================================================================================

Response.Cookies("user_name").Expires=Date+1 '指定cookie保存时间


保留COOKIES一个小时
Response.Cookies("MyCookie").Expires= (now()+1/24)

Response.Cookies("MyCookie").Expires = DateAdd("h", 1, Now())


Response.Cookies("CookieName").Expires=DateAdd("m",60,now())  
设置60个月以后过期

Response.Cookies("User").expires=second()+7
在expires后面定义的时间可以用时间函数代替
例如:date()+7就表示在今天的时间上加上7天,而second()+7则是7秒了。

Response.Cookies("字段名").expires=时间函数+N,例如:
Response.Cookies("name2").expires=date+1,表示Cookies保存1天,再比如:
Response.Cookies("name2").expires=Hour+8,表示Cookies保存8小时。
这种方法我测试过不行(在2003server,iis6.0中),不管second后面有无加(),访问时会出现500错误(还是无法显示网页?忘了)。


织梦尤文:这里的时间累加建议还是使用DateAdd函数,比如我们要累加一小时,则使用:
Response.Cookies("baidooglecom").expires = DateAdd("h", 1, Now())

30分钟:  
Response.Cookies("CookieName").Expires=DateAdd("n",30,now())

dateadd("S",30,now()) 得到秒


Expires 指定 cookie 的过期日期。为了在会话结束后将  cookie 存储在客户端磁盘上,或在许多时候,我们希望能更长时间地在访问者的计算机上保存cookie。必须设置该日期。
若此项属性的设置未超过当前日期,则在任务结束后 cookie 将到期。
cookie的使用到期时间为“2010年1月1日”: Response.Cookies("CookieName").Expires=#January 01, 2010#
cookie的过期时间为“cookie的创建时间+365天”:Response.Cookies("CookieName").Expires=Date+365
但最好不要随便写 Response.Cookies("CookieName").Expires=Date,这样页面之间的调用时值会为空。

分享到:
评论

相关推荐

    Servlet Cookie基本概念和使用方法.pdf

    **Cookie的基本概念** 1. **类型** - **会话Cookie**:这类Cookie在用户关闭浏览器时自动删除,通常用于存储临时性信息,如用户浏览的页面、选择的选项等。它们没有过期时间,因此浏览器会在会话结束时丢弃。 - *...

    Cookie属性及操作大全

    本文将深入探讨Cookie的属性及操作,帮助你全面理解并掌握Cookie的相关知识。 一、Cookie的基本概念 Cookie是由服务器端发送到客户端(浏览器)的一小段文本信息,存储在用户的本地硬盘上。每当用户再次访问同一...

    Java Servlet及Cookie的使用

    Java Servlet和Cookie是Web开发中的两个重要概念,它们在构建动态、交互式的Web应用程序中扮演着关键角色。本文将深入探讨这两个技术,并提供详细的实践应用示例。 **Java Servlet** Java Servlet是一种Java语言...

    cookie读写,子cookie

    在这个“cookie读写,子cookie”主题中,我们将深入探讨Cookie的读取、写入以及子Cookie的概念。 首先,Cookie是由服务器端创建并发送到客户端(浏览器)的一小段文本信息,浏览器会在后续的HTTP请求中自动将这些...

    cookie的使用例子

    ### Cookie的使用方法与实例详解 #### 一、Cookie简介 在Web开发中,Cookie是一种常用的客户端存储技术,用于在用户的浏览器中存储少量的数据。这些数据可以被网站用来跟踪用户的状态,例如记住用户的登录信息或者...

    使用Cookie记录用户名和密码

    在编程实现上,对于Java开发者,可以使用HttpServletResponse的addCookie()方法来设置Cookie,而对于前端JavaScript,可以使用document.cookie接口来操作Cookie。对于Python的Flask或Django框架,也有相应的库函数...

    cookie使用工具类

    本文将深入探讨Cookie的基本概念、用途以及如何使用`CookieUtil`工具类进行操作。 首先,让我们了解Cookie的基础知识。Cookie是由服务器发送到用户浏览器并由浏览器保存的小型文本文件。它们包含键值对,用于跟踪...

    Cookie的使用方法 增删改查

    **一、Cookie的基本概念** Cookie是由服务器端发送到客户端(浏览器)的一小段文本信息,浏览器会保存这个信息并在后续的请求中将其发送回服务器。主要用途包括用户身份验证、会话管理、个性化设置等。每个Cookie都...

    Cookie浏览器

    在了解Cookie浏览器之前,我们先来详细探讨一下Cookie及其相关概念。 1. **Cookie的定义与工作原理** - Cookie是由Web服务器发送到用户的浏览器并存储在那里的一小块信息,当用户再次访问同一网站时,浏览器会将...

    关于document.cookie的使用

    关于`document.cookie`的使用,这是一个在Web开发中极为关键的概念,主要用于客户端存储少量的数据,以便网站能够识别用户,提供个性化服务,或是保存用户的偏好设置等。以下将深入解析`document.cookie`的特性、...

    ASP.NET中Cookie对象的使用及防止重复投票代码

    1. **Cookie对象的基本使用** - 创建Cookie:在ASP.NET中,我们可以通过`HttpCookie`类创建Cookie。例如,`HttpCookie myCookie = new HttpCookie("myCookieName")`。 - 设置值:`myCookie.Value = "someValue"`,...

    微信小程序cookie维护插件 实现自动设置获取cookie功能

    首先,理解Cookie的基本概念。Cookie是由服务器端生成,发送到客户端(浏览器)的一小段文本信息,客户端每次向服务器发送请求时,都会将Cookie一并发送回去。在微信小程序中,虽然没有浏览器环境,但可以通过模拟...

    cookie的使用,实用的demo

    首先,我们来了解Cookie的基本概念。Cookie是由服务器端发送到客户端(浏览器)的一小段信息,存储在用户的本地设备上。当用户再次访问同一网站时,浏览器会自动将Cookie回传到服务器,从而实现识别用户身份的功能。...

    Net Cookie操作读取数据

    一、Cookie的基本概念 Cookie由服务器端创建并发送到客户端(浏览器),客户端会在后续的请求中自动携带这些Cookie回服务器。每个Cookie都包含一个名称、值、过期时间、路径、域等属性。在.NET中,Cookie对象可以...

    cookie记住账号密码

    这涉及到Web开发中的基本概念,主要包括Cookie的工作原理、安全性以及相关编程实践。 Cookie是服务器发送到用户浏览器并存储的一小块数据,它包含了特定的用户信息。当用户访问设置了Cookie的网站时,浏览器会自动...

    java中cookie的使用教程

    本文将深入讲解Java中Cookie的使用方法,包括创建、设置、读取和删除Cookie,以及其在Web应用程序中的作用。 1. **Cookie的基本概念** - **定义**:Cookie是服务器发送到用户浏览器并存储在本地的一小块数据,当...

    易语言取设cookie

    在易语言中,“取设cookie”是网络编程中的一个重要概念,主要用于处理网页浏览过程中的数据存储与交互。 Cookie是在HTTP协议下,服务器发送到用户浏览器并保存在本地的一小块数据,它用于记录用户的浏览历史、登录...

    Android下登录Demo(使用了读写Cookie操作)

    首先,理解Cookie的基本概念至关重要。Cookie是由服务器发送到客户端(浏览器或Android应用)的一小段文本数据,包含了用户的会话信息,如登录状态、个性化设置等。当客户端发起新的请求时,会自动将对应的Cookie...

    PHP创建和使用session cookie变量

    ### PHP 创建和使用 Session Cookie 变量 #### Session 基础 Session 是一种服务器端...综上所述,Session 和 Cookie 都是 PHP 中非常重要的概念,了解它们的使用方法和区别对于开发高质量的 Web 应用程序至关重要。

    cookie session 的概念和基本用法

    **会话(Session)与Cookie的概念** 会话(Session)是指从用户打开浏览器开始到关闭浏览器为止的一系列网络交互过程。在这个过程中,浏览器通过HTTP协议与服务器之间进行多次请求和响应。为了保持用户状态,服务器...

Global site tag (gtag.js) - Google Analytics