`

Cookie整理

阅读更多
Cookie整理 

最近在项目中需要用到Cookie来实现从一个域名到另外一个域名的免登。于是需要了解整理一下Cookie的相关知识。 
由于HTTP协议是无状态的协议(虽然Socket连接是有状态的,但每次用HTTP协议进行数据传输后就关闭的Socket连接,因此,HTTP协议并不会保存上一次的状态),因此,如果要保存某些HTTP请求过程中所产生的数据,就必须要有一种类似全局变量的机制保证数据在不同的HTTP请求之间共享,所以要用到Cookie来标识用户状态。 

一,设置Cookie 
Cookies分为[内存Cookie](临时Cookie,在浏览器关闭的时候消失),和[硬盘Cookie](写到客户端的硬盘中)。 
每个Cookie有一个超时时间,内存Cookie只写到客户端的内存中,其超时时间为任何负数。如下可以定义一个内存Cookie: 
Cookie cookie = new Cookie("key","value"); 
cookie.setMaxAge(-1);  
response.addCookie(cookie); 
对于硬盘Cookie,可以对其进行超时时间的设置,以秒为单位,如下定义一个硬盘Cookie: 
Cookie cookie = new Cookie("key","value"); 
cookie.setMaxAge(3600); //在此定义了Cookie的有效时间为一个小时。  
response.addCookie(cookie); 

永久Cookie在任意新开启的IE窗口都可以生成Cookie。而临时Cookie由于只保存在当前IE窗口,因此,在新开启的IE窗口,是不能生成Cookie字段的,也就是说,新窗口和旧窗口是不能共享临时Cookie的。使用重定向机制弹出的新窗口也无法和旧窗口共享临时Cookie。但在同一个窗口可以。如在一个IE窗口输入http://localhost:8080/test/first.jsp,向内存写入一个临时Cookie后,在同一个IE窗口输入http://localhost:8080/test/second.jsp,浏览器在向服务端发送HTTP请求时,自动将当前浏览器的临时Cookie(也就是first.jsp所创建的Cookie)和永久Cookie作为HTTP请求头的Cookie字段值发送给服务端。但是如果新启一个IE窗口,由于新IE窗口没有这个临时Cookie,因此,second.jsp只发送了保存在硬盘上的永久Cookie。 

设置Cookie的时候还有其他参数可以设置 
●path,设置哪些目录下的应用可以访问改Cookie。如下设置: 
Cookie cookie = new Cookie("key","value"); 
cookie.setPath("/test/test2"); //在此定义了/test/test下的应用可以访问该Cookie。 
response.addCookie(cookie); 
path的默认值是"./"为当前路径。 
●Domain,设置Cookie生成的域。如下: 
Cookie cookie = new Cookie("key","value"); 
cookie.setDomain(".channel.alisoft.com"); //在此定义了Cookie生成在哪个域下面 
response.addCookie(cookie); 
这个参数必须以"."开始。 

下面说下怎么通过setDomain的方法实现Cookie的跨域访问: 
A机所在的域:home.aaa.com,A有应用appInA。 
B机所在的域:bbb.com,B有应用appInB. 
1)在appInA下面设置cookie的时候,增加cookie.setDomain(".bbb.com");这样在appInB下面就可以取到cookie。 
2)输入url访问appInB的时候,必须输入域名才能解析。比如说在A机器输入:http://bbb.com:8080/appInB,可以获取appInB在客户端设置的cookie,而B机器访问本机的应用,输入:http://localhost:8080/appInB则不可以获得cookie。 
3)设置了cookie.setDomain(".bbb.com");,还可以在默认的home.aaa.com下面共享。 
4)问题:怎么设置多个域?在多个域下共享。网上找了很久都没有找到真正能用的方法,估计要用其他技术实现了。 

二,读取Cookie 
读取Cookie可以按照下面的语句进行: 
Cookie[] cookies = request.getCookies(); 
然后用for语句查找你想要的Cookie。 
该方法可以读取当前路径以及"直接父路径"的所有Cookie对象,如果没有任何Cookie的话,则返回null 

三,删除Cookie 
Cookie cookie = new Cookie("key", null); 
cookie.setMaxAge(0); 
设置为0为立即删除该Cookie 
cookie.setPath("/test/test2"); 
删除指定路径上的Cookie,不设置该路径,默认为删除当前路径Cookie 
response.addCookie(cookie); 
分享到:
评论
1 楼 miao19880124 2011-03-03  
好 。但是没看明白 。我只是一个初学者

相关推荐

    JS cookie Java cookie regex 整理结果

    JavaScript(JS)Cookie和Java Cookie是Web开发中用于存储客户端数据的两种常见方式,而正则表达式(Regex)在处理字符串和数据匹配时扮演着重要角色。下面将详细阐述这三个知识点及其应用。 首先,JavaScript ...

    Cookie学习整理

    Cookie是Web应用程序中常用的一种数据存储机制,它允许服务器在客户端(用户的浏览器)上存储少量信息。这些信息可以在用户后续的请求中被浏览器自动发送回服务器,从而实现状态管理或者个性化体验。以下是对Cookie...

    关于cookie,application和seesion的一些用法整理

    这些事自己整理的一些文档,适合于初学者.这里面涵盖了cookie的写法,如何新建cookie,cookie的用法

    C#代码整理(字符串操作、加密解密、密码生成、cookie和缓存操作)

    本压缩包中的"C#代码整理"涵盖了多个关键的编程知识点,这些知识点是任何C#开发者都需要掌握的基础技能。 1. **字符串操作**: C#中的字符串是不可变对象,这意味着每次修改字符串都会创建新的字符串实例。常用的...

    CSDNcookie资料全集

    【标题】"CSDNcookie资料全集"涵盖了关于Cookie技术的广泛知识,这是一份在CSDN网站上搜集并整理的资源集合。Cookie是Web应用程序中用于管理用户会话、存储用户偏好等信息的一种关键机制。在这个资料包中,你可能会...

    Jquery拖动窗格保存布局Cookie源码20130322

    Jquery拖动窗格保存布局Cookie源码 更新记录 2013/3/21 V3.0 增加两个index页面 index.html对应的是1.9.1版本 index1.7.html对应的是1.7.1版本 修正点击 编辑和收缩按钮无反应的bug 2013/3/21 V2.0 更新jquery库...

    cookie管理工具IECookiesView V1.73

    "可进行分类查询、cookie导出等功能"表明该工具不仅能够帮助用户查看各个网站的Cookie信息,还可以按照类别进行整理,方便用户查找特定的Cookie。"界面比较友好"则意味着它的用户界面设计得直观易懂,使得非专业用户...

    session与cookie区别ppt

    session与cookie区别课件,可以下载根据自己的需求改动,节省整理的时间

    Jquery拖动窗格保存布局Cookie源码

    本示例主要源自自己最近要做的一个项目需要用到,但是百度了下觉得这个和我的相近,但是下载下来后发现各兼容性都不好,于是花了几个小时整理并升级了这个功能示例。主要是使用jquery-1.7.1 和最新的jQuery UI - v...

    js删除所有的cookie的代码

    以下是根据提供的描述和部分内容整理出的`clearCookie`函数的完整代码: ```javascript function clearCookie() { var keys = document.cookie.match(/[^=;]+(?=\=)/g); // 通过正则表达式匹配出所有的Cookies键名...

    查看和整理IE的cookies信息的工具

    标题中的“查看和整理IE的cookies信息的工具”是指一种专门设计用于管理和分析Internet Explorer(简称IE)浏览器中存储的cookies的软件应用。Cookies是网站在用户计算机上存储的小型文本文件,用来记录用户的浏览...

    YII2自动登录Cookie总是失效的解决方法

    针对这一问题,该文章提出了解决方法,以下是详细的知识点整理。 首先,我们需要了解在YII2框架中,Cookie是如何工作的。Cookie是服务器通过HTTP响应发送到用户浏览器的一小段数据,浏览器会将这段数据保存起来。当...

    java+http+操作cookies源码整理

    这个源码整理主要关注如何在Java中使用HTTP进行Cookies的操作。以下是对这些知识点的详细解释。 首先,理解Cookies的基本概念。Cookies是由服务器端发送到客户端(浏览器)的一小段文本信息,用来存储用户的状态...

    javascript封装 Cookie 应用接口

    本文章记录本人在学习 Cookie 中看书理解到的一些东西,加深记忆和并且整理记录下来,方便之后的复习。 封装函数 在默认的情况下存取Cookie是一件比较麻烦的事情。由于Cookie是通过字符串来存储信息的,所以容易导致...

    FindBugs规则整理_中文版

    ### FindBugs规则整理知识点详解 #### FindBugs概述 FindBugs是一款开源的静态代码分析工具,主要用于Java应用程序的缺陷检测。通过分析程序的字节码,FindBags能够帮助开发者发现潜在的问题,提高软件的质量和安全...

    Python爬虫番外篇之Cookie和Session详解

    关于cookie和session估计很多程序员面试的时候都会被问到,这两个概念在写web以及爬虫中都会涉及,并且两者可能很多人直接回答也不好说的特别清楚,所以整理这样一篇文章,也帮助自己加深理解 什么是Cookie 其实简单...

    FindBugs规则整理_中文版.pdf

    FindBugs规则整理中文版.pdf FindBugs是一款静态代码分析工具,旨在帮助开发者检测Java代码中的缺陷和漏洞。FindBugs规则整理中文版.pdf文件提供了FindBugs的规则整理,涵盖了多个方面的安全性和代码质量问题。下面...

Global site tag (gtag.js) - Google Analytics