- 浏览: 166525 次
- 性别:
- 来自: 广州
文章分类
最新评论
-
兰斯洛特1987:
顶!!!!谢谢分享.最近我也在研究这玩意...
Java语言的Hook实现 -
pu02203:
我把Confidant.jar, 丢进去eclipse, 里面 ...
重磅推出诛仙辅助软件第二波:Java版按键精灵 -
泣血端午:
Calculagraph 这是哪个类啊?
A星算法 -
haitaohehe:
我使用的是jstl1.0 可是在使用<c:set va ...
JSTL1.0和JSTL1.1的区别 -
micheal19840929:
学习楼主,我也测试一下~看看兼容性吧。lanlanzhilia ...
手机版飞鸽传书:无线牵
17.2 存取Cookie
创建Cookie的方式与定义一个变量的方式有些类似,都必须使用Cookie名和Cookie值。同一个网站可以创建多个Cookie,而多个Cookie可以存放在同一个Cookie文件中。使用Document对象的cookie属性可以设置一个Cookie,也可以从一个Cookie文件中读取所有的Cookie内容。
17.2.1 存取Cookie的方法
在JavaScript中存取Cookie时,必须要使用Document对象的cookie属性。创建或修改一个Cookie的语法代码如下所示:
document.cookie = "name=value"
在以上代码中,name为Cookie名,value为Cookie值。如果要创建多个Cookie,可以多次使用以上代码。使用Document对象的cookie属性,也可以读取Cookie文件中的Cookie信息。如以下代码所示:
var cookies = document.cookie
在以上代码中,cookies为变量名,document.cookie可以取得整个Cookie文件中的信息,因此,变量cookies有可能会包括多个Cookie的信息。
17.2.2 创建与读取Cookie
使用Document对象的cookie属性可以创建和读取Cookie。其具体实现方法如代码清单17-1所示,请注意加粗的文字。
代码清单17-1 创建与读取Cookie
<html> <head> <title>创建与读取Cookie</title> <meta http-equiv="content-type" content="text/html;charset=gb2312"> <script language="javascript" type="text/javascript"> <!-- //设置Cookie function setCookie() { var userName = myForm.myName.value; var userPassword = myForm.myPassword.value; //添加或修改第一个Cookie,该Cookie名为cookieUserName,值 //为“姓名”文本框中的内容 document.cookie = "cookieUserName="+userName; //添加或修改第二个Cookie,该Cookie名为cookieUserPassword, //值为密码框中的内容 document.cookie = "cookieUserPassword="+userPassword; } //读取Cookie function getCookie() { //获得Cookie文件中的信息 var cookieMesaage = document.cookie; alert(cookieMesaage); } --> </script> </head> <body> <form name="myForm"> 姓名:<input type="text" name="myName"><br> 密码:<input type="password" name="myPassword"><br> <input type="button" value="设置Cookie" onclick="setCookie()"> <input type="button" value="读取Cookie" onclick="getCookie()"> </form> </body> </html>
上述代码为光盘目录里“代码\第17章\sample01.htm”的内容,本例的关键知识点如下所示:
(1)创建了一个文本框,一个密码框和两个按钮。
(2)单击【设置Cookie】按钮时,调用setCookie()函数。在该函数中,先获取文本框和密码框中的文字,然后使用以下代码添加一个Cookie。
document.cookie = "cookieUserName="+userName;
在以上代码中,Cookie名为“cookieUserName”,Cookie值为文本框中的内容。
(3)然后使用以下代码创建另一个Cookie,该Cookie名为“cookieUserPassword”,值为密码框中的内容。
document.cookie = "cookieUserPassword="+userPassword;
(4)单击【读取Cookie】按钮时,调用getCookie()函数。在该函数中,使用以下代码获取Cookie文件中的所有信息。
var cookieMesaage = document.cookie;
(5)然后使用alert()方法,将变量cookieMesaage的值输出,如图17-1所示。从图17-1中可以看出,Cookie文件中记录了两个Cookie的名称和值。
图17-1 sample01.htm的运行结果
在默认情况下,只要打开sample01.htm文件的浏览器窗口还没有关闭时,Cookie就会一直存在,同一网站上的其他网页也可以读取该Cookie。代码清单17-2就是一段读取Cookie内容的代码,请注意加粗的文字。
代码清单17-2 读取Cookie
<html> <head> <title>读取Cookie</title> <meta http-equiv="content-type" content="text/html;charset=gb2312"> <script language="javascript" type="text/javascript"> <!-- var cookieMesaage = document.cookie; if (cookieMesaage=="") { document.write("没有获得Cookie值,请确认sample01.htm文 件是否打开"); } else { document.write("Cookie文件中的内容为:<br>",cookie- Mesaage); } --> </script> </head> <body> </body> </html>
上述代码为光盘目录里“代码\第17章\sample02.htm”的内容。如果打开sample01.htm的浏览器窗口而且还没有关闭,那么该文件可以读取sample01.htm文件所创建的Cookie,如图17-2所示。如果打开sample01.htm的浏览器窗口已经关闭,则该文件读取的Cookie内容为空,那么运行该文件的结果如图17-3所示。
图17-2 没有关闭sample01.htm窗口时的运行结果
图17-3 关闭sample01.htm窗口时的运行结果
17.2.3 精确读取Cookie值
从上例中可以看出,使用document.cookie获得的是整个Cookie文件中的内容,因此,很有可能会包括多个Cookie的内容。如果要精确获取某个Cookie的值,就必须要使用String对象中的一些方法。在图17-2中,整个Cookie文件中的内容如下所示:
cookieUserName=张三; cookieUserPassword=123456
以上内容包括了cookieUserName和cookieUserPassword两个Cookie的名和值,如果要获得其中一个Cookie的值,具体实现步骤如下所示:
(1)使用document.cookie获得整个Cookie文件的内容。
(2)如果要获得某个Cookie的值,可以使用String对象的substring()方法来截取该Cookie值的某一部分。以cookieUserName为例,就必须要截取从“张三”开始到“;”为止这部分的子字符串。
(3)要获得某个指定的Cookie值,就必须要获得Cookie值的开始和结束位置。由于Cookie值是不固定的,而Cookie名是固定的,所以可以先获得Cookie名的开始位置,以cookieUserName为例,就必须要获得子字符串“cookieUserName=”在整个字符串的位置。之所以要加上“=”,是为了防止某个Cookie的值中正好包含了“cookieUserName”字符串。
(4)获得了Cookie名的开始位置之后,可以通过Cookie名的开始位置加上Cookie名的长度再加上1(即加上了“=”的位置)的方法来获得Cookie值的开始位置。
(5)获得了Cookie值的开始位置之后,还必须要知道Cookie值的结束位置才可以使用String对象的substring()方法来截取Cookie值。
(6)获得Cookie值的结束位置有两种情况:
第一种情况是该Cookie值之后还有Cookie,那么就要从该Cookie值的开始位置查找,第一个“;”出现的位置就是Cookie值的结束位置。
第二种情况是该Cookie值之后没有其他Cookie了,那么该Cookie值的结束位置也就是整个Cookie内容的最后位置,可以通过Cookie内容的长度来获得该结束位置。
(7)最后使用String对象的substring()方法来获得Cookie的值。
代码清单17-3显示了如何精确读取Cookie的值,请注意加粗的文字。
代码清单17-3 精确读取Cookie值
<html> <head> <title>精确读取Cookie值</title> <meta http-equiv="content-type" content="text/html;charset=gb2312"> <script language="javascript" type="text/javascript"> <!-- //设置Cookie function setCookie() { var userName = myForm.myName.value; var userPassword = myForm.myPassword.value; //添加或修改第一个Cookie,该Cookie名为cookieUserName,值 //为“姓名”文本框中的内容 document.cookie = "cookieUserName="+userName; //添加或修改第二个Cookie,该Cookie名为cookieUserPassword, //值为密码框中的内容 document.cookie = "cookieUserPassword="+userPassword; } function getCookie(cookieName) { //获得Cookie文件中的信息 var cookieMesaage = document.cookie; var cookieValue = ""; //获得Cookie值 if (cookieName=="myName") { cookieValue = returnCookieValue(cookieMesaage, "cookieUserName") alert("姓名为:"+cookieValue); } else if (cookieName=="myPassword") { cookieValue = returnCookieValue(cookieMesaage, "cookieUserPassword") alert("密码为:"+cookieValue); } } //该函数用于返回某个Cookie的值 //cookieValue为整个Cookie文件的内容 //cookieName为要获得值的Cookie名 function returnCookieValue(cookieValue,cookieName) { //设置返回值 var returnCookieValue = ""; //查找Cookie名在整个Cookie文件内容中的位置 var cookieNameIndex = cookieValue.indexOf(cookie- Name+"="); //如果在Cookie文件内容中找到Cookie名,则进一步查找该Cookie //的值 if (cookieNameIndex!=-1) { //查找Cookie值在Cookie文件内容中的位置。 //该位置为Cookie名的位置加上Cookie名的长度,再加上“=” //号的长度,即1 var cookieValueBeginIndex = cookieNameIndex + cookieName.length + 1; //查找Cookie值在Cookie文件内容中的位置。 //该位置为从Cookie名的位置开始到第一个“;”为止 var cookieVlaueEndIndex = cookieValue.indexOf(";", cookieValueBeginIndex); //如果从Cookie名的位置开始到整个Cookie文件内容的最后都 //没有找到“;”,那么Cookie值的结束位置就是整个Cookie //内容的最后 if (cookieVlaueEndIndex==-1) { cookieVlaueEndIndex = cookieValue.length; } //通过Cookie值的开始位置和结束位置获得Cookie值 returnCookieValue = cookieValue.substring (cookieValueBeginIndex,cookieVlaueEndIndex); } //返回Cookie值 return returnCookieValue; } --> </script> </head> <body> <form name="myForm"> 姓名:<input type="text" name="myName"><br> 密码:<input type="password" name="myPassword"><br> <input type="button" value="设置Cookie" onclick="setCookie()" ><br> <input type="button" value="读取Cookie中的姓名" onclick= "getCookie('myName')"> <input type="button" value="读取Cookie中的密码" onclick= "getCookie('myPassword')"> </form> </body> </html>
上述代码为光盘目录里“代码\第17章\sample03.htm”的内容。本例修改了代码清单17-1中的代码,添加了两个按钮,单击这两个按钮可以获得不同的Cookie的值。如图17-4为单击【读取Cookie中的姓名】按钮后的结果。
图17-4 sample03.htm的运行结果
17.2.4 通过数组来读取Cookie值
除了使用17.2.3小节中的方法读取Cookie值之外,还可以使用数组的方法来读取Cookie值。再看一下在图17-2中,整个Cookie文件中的内容如下所示:
cookieUserName=张三; cookieUserPassword=123456
从以上代码中可以看出,一个Cookie文件中,将不同的Cookie使用“; ”号作为分隔符进行分隔(分号后还有一个空格)。而每个Cookie中,使用“=”作为分隔符,“=”左侧是Cookie名,“=”右侧是Cookie值。那么通过String对象的split()方法,可以很容易将以上代码分割成数组,分割需要分两步进行,步骤如下所示:
(1)使用split(“;”)将整个Cookie内容分割成一个数组,该数组中每个元素都是一个Cookie(包括Cookie名、“=”号、Cookie值)。经过这一步可以得到的数组如下所示:
Arr[0] = "cookieUserName=张三"
Arr[1] = "cookieUserPassword=123456"
(2)从以上代码中可以看出,数组中的每一个元素都包括了Cookie名和Cookie值,这种格式并不利于Cookie值的查询,因此,还需要对Arr[]数组中的每一个元素进行分割。这次分割可以使用split(“=”)方法。然后得到一个二维数组,如以下代码所示:
myArr[0][0] = "cookieUserName" myArr[0][1] = "张三" myArr[1][0] = "cookieUserPassword" myArr[1][1] = "123456"
最后,可能通过循环来判断myArr[i][0]的值是否与Cookie名的值相同,如果相同,那么myArr[i][1]的值就是Cookie的值。其具体实现过程如代码清单17-4所示,请注意加粗的文字。
代码清单17-4 精确读取Cookie值
<html> <head> <title>精确读取Cookie值</title> <meta http-equiv="content-type" content="text/html;charset=gb2312"> <script language="javascript" type="text/javascript"> <!-- //设置Cookie function setCookie() { var userName = myForm.myName.value; var userPassword = myForm.myPassword.value; //添加或修改第一个Cookie,该Cookie名为cookieUserName,值 //为“姓名”文本框中的内容 document.cookie = "cookieUserName="+userName; //添加或修改第二个Cookie,该Cookie名为cookieUserPassword, //值为密码框中的内容 document.cookie = "cookieUserPassword="+userPassword; } function getCookie(cookieName) { //获得Cookie文件中的信息 var cookieMesaage = document.cookie; var cookieValue = ""; //获得Cookie值 if (cookieName=="myName") { cookieValue = returnCookieValue(cookieMesaage, "cookieUserName") alert("姓名为:"+cookieValue); } else if (cookieName=="myPassword") { cookieValue = returnCookieValue(cookieMesaage, "cookieUserPassword") alert("密码为:"+cookieValue); } } //该函数用于返回某个Cookie的值 //cookieValue为整个Cookie文件的内容 //cookieName为要获得值的Cookie名 function returnCookieValue(cookieValue,cookieName) { var returnCookieValue = ""; //使用“; ”作为分隔符将整个Cookie内容分隔成数组,此时数组中 //的每个元素都是由一个Cookie名、等于号和Cookie值组成的字符串 var cookies = cookieValue.split("; "); //定义一个数组,用于存放Cookie名和Cookie值 var cookiesValue = new Array(); //通过循环将Cookie名和Cookie值放在数组中 for (var i=0;i<cookies.length;i++) { //将数组cookies中的每一个元素都分割成数组,此时数组的第 //一个元素为Cookie名,第二个元素为Cookie值 var tempArr = cookies[i].split("="); //将数组作为元素放在cookiesValue数组中 cookiesValue[i] = tempArr; } //通过循环查找Cookie名和Cookie值 for (var i=0;i<cookiesValue.length;i++) { //如果数组中的第一个元素值与Cookie名相同,那么数组中的第 //二个元素值为Cookie值 if (cookiesValue[i][0]==cookieName) { returnCookieValue = cookiesValue[i][1]; break; } } return returnCookieValue; } --> </script> </head> <body> <form name="myForm"> 姓名:<input type="text" name="myName"><br> 密码:<input type="password" name="myPassword"><br> <input type="button" value="设置Cookie" onclick="setCookie()" ><br> <input type="button" value="读取Cookie中的姓名" onclick= "getCookie('myName')"> <input type="button" value="读取Cookie中的密码" onclick= "getCookie('myPassword')"> </form> </body> </html>
上述代码为光盘目录里“代码\第17章\sample04.htm”的内容。本例修改了代码清单17-3中的代码,使用数组的方式来精确读取Cookie的值,其运行结果与sample03.htm的运行结果相同,读者也可以自己运行该文件查看效果。
发表评论
-
HTTP POST GET 本质区别详解
2010-08-24 09:50 927一 原理区别 一般在浏览器中输入网址访问资源都是通 ... -
Linux的SMTP 命令
2010-07-12 17:54 1164HELO 向服务器标识用户身份。发送者能欺骗,说谎,但一般情况 ... -
常见异常解决方法
2010-06-30 09:49 816【异常】 com.caucho.config.LineCon ... -
在servlet中获取web.xml中设置的初始化参数信息的方法
2010-06-29 17:31 1856HttpServlet的父类GenericServlet类中实 ... -
servlet中init()和service()方法的区别
2010-06-29 16:49 1202首先你要明确servlet的生命周期和HTTP协议. Serl ... -
JSTL1.0和JSTL1.1的区别
2010-06-24 11:51 1578这要从一个异常说起 According to TLD or ... -
spring中配置二级缓存
2010-06-23 11:09 725spring中配置二级缓存 关键字: spring hib ... -
DetachedCriteria分页记录重复解决方案
2010-06-08 16:21 2369尝试了criterion.setResultTransform ... -
hessian demo和hessian与spring整合demo
2010-04-21 10:30 1279/** * @version 1.1 * @author ia ... -
HttpSessionListener统计在线人数
2010-03-22 12:29 1324在网站中经常需要进行在线人数的统计。过去的一般做法 ... -
request.getSession(false)和request.getSession(true)区别
2010-02-11 12:25 1683request.getSession(false)和req ... -
Chapter 11. HQL: The Hibernate Query Language - 十一章 HQL: Hibernate 查询语言
2010-01-22 17:33 1738NHibernate is equiped with an e ... -
任务型队列式多线程之实现
2010-01-16 10:34 2513前言:最近做的一个项目正好要用到多线程,而且要实现 ... -
Hibernate中显示前一条,后一条记录
2010-01-08 15:21 710哪位有更好的方法,贡献下,谢了先! /** ... -
Cookie之一
2010-01-06 11:42 793Cookie是存储在客户端计 ... -
典型的 SQL 注入过程
2009-12-29 17:28 778此漏洞已帮其修复,并知会当事人 SQL 注入漏洞危害巨大,但 ... -
Hibernate(jpa)复合主键annotation声明方法
2009-12-22 10:56 760CREATE TABLE TB_HOUR_DATA( S ... -
实现jsp点击txt链接强制下载
2009-11-27 17:44 3422web开发时有时候会遇到,点击一个txt的文本,需要出现下载的 ...
相关推荐
2. 获取Cookie:根据键从请求中查找Cookie,并返回其值。 3. 更新Cookie:修改已存在Cookie的值或属性。 4. 删除Cookie:设置Cookie的过期时间为0,使其在浏览器中失效。 例如,一个简单的Cookie工具类可能如下所示...
#### 二、Cookie基础 ##### 1. 定义 Cookie 是一种简单的文本格式文件,用于存储用户的偏好设置、登录状态等信息。当用户首次访问网站时,服务器会通过响应头中的`Set-Cookie`字段向客户端发送Cookie信息。之后,...
#### 二、Cookie的创建与使用 ##### 1. 创建Cookie对象 在Java中,创建Cookie非常简单。下面的示例展示了如何创建并设置用户名和密码的Cookie: ```java // 创建用户名Cookie对象 Cookie cookieUserName = new ...
在IT领域,尤其是在Web开发中,Cookie的管理与安全至关重要。C#作为一种广泛使用的编程语言,在处理Cookie方面提供了丰富的功能,包括对Cookie的加密与解密。本文将深入探讨如何在C#中操作Cookie,以及如何实现...
雪球是一款财经资讯和社交应用,保护用户数据安全是其重要职责之一,因此使用了这种高级的加密算法来保护用户的cookie信息。 首先,我们来了解一下cookie加密的基本概念。Cookie是网站存储在用户浏览器上的小型文本...
2. **登录绕过与免登录机制** - 利用Cookie实现登录绕过:当用户首次登录某个网站并选择“记住我”选项时,服务器会将一个包含登录凭证的Cookie发送给浏览器。下次访问时,只要浏览器发送这个Cookie,服务器就能...
### JAVA之cookie与session #### 一、Cookie与Session的概念 **Cookie** 与 **Session** 是两种在 Web 开发中用于跟踪用户会话的重要技术。它们的主要目标是在客户端和服务端之间保持状态。 - **Cookie** 机制...
2. **设置 Cookie 的值为 null**: - 通过将 Cookie 的值设为 null,并指定路径参数来删除 Cookie。 **示例代码**: ```javascript $.cookie('name', null, { path: '/' }); // 删除名为 'name' 的 Cookie ``...
- **示例2:** 使用`browser_cookie3`加载Firefox浏览器的cookies。 ```python >>> import browser_cookie3 >>> cj = browser_cookie3.firefox() >>> opener = urllib2.build_opener(urllib2....
在C#编程语言中,处理Cookie是构建动态Web应用程序的关键技能之一。本篇将深入探讨如何使用C#来创建、设置、读取和管理Cookie。 首先,Cookie是由服务器端发送到用户浏览器并存储在本地的小型文本文件。它们主要...
2. 浏览器接收并存储Cookie,通常按照域名进行分类。 3. 当用户再次向同一服务器发送请求时,浏览器会在HTTP请求头的Cookie字段中包含之前存储的Cookie值。 4. 服务器读取Cookie,根据其中的信息做出相应的处理。 ...
2. 使用隐私浏览模式,或者限制非必要的Flash内容加载。 3. 定期检查并清理FlashPlayer的本地存储设置,通常可以在Flash Player的控制面板中找到这个选项。 4. 使用隐私增强浏览器插件,这些插件可以帮助用户识别和...
2. 合理设置Cookie的生命周期,既不能太短导致频繁登录,也不能太长带来安全风险。 3. 在处理Cookie超时事件时,要确保用户体验流畅,尽量减少对用户操作的干扰。 总之,微信小程序cookie维护插件通过自动化设置和...
2. **便捷性**:由于Cookie是自动管理的,用户再次访问网站时无需手动输入凭证信息。 3. **可维护性**:将用户名和密码分开存储,可以简化代码逻辑并提高程序的可维护性。 #### 四、代码解析 根据提供的部分代码...
2. **安全性考虑**: - **安全性和隐私**:不应将敏感信息如明文密码直接存储在Cookie中,而应使用哈希或加密技术处理。同时,设置Secure标志确保Cookie仅通过HTTPS传输,防止中间人攻击。 - **跨站脚本攻击(XSS...
2. **`InternetGetCookieA` 函数**: 这个函数用于获取指定URL的Cookie。它的参数包括: - `lpszUrl`:要获取Cookie的URL。 - `lpszCookieName`:如果为NULL,将获取所有Cookie;否则,只获取指定名称的Cookie。 ...
2. **Cookie类型**:临时Cookie(Session Cookie)在浏览器关闭后消失,而持久Cookie(Persistent Cookie)则在设定的过期日期前一直存在。 3. **Cookie作用**:Cookie主要用于身份验证、跟踪用户行为、保持会话状态...
标题中的“获取cookie非常好用的google插件”指的是在Google Chrome浏览器上的一种扩展程序,它允许用户方便地管理和操作浏览器中的Cookie数据。Cookie是网站在用户计算机上存储的小型文本文件,用于跟踪用户偏好、...
2. **创建Cookie**: 创建Cookie时,你需要实例化`Cookie`类,然后调用`setName()`设置Cookie的名称,`setValue()`设置其值。例如: ```java Cookie cookie = new Cookie("username", "JohnDoe"); ``` 3. **...
二、设定 Cookie 生命周期 Cookie 的生命周期可以通过 setMaxAge() 方法来设定。setMaxAge() 方法将 Cookie 的生命周期设置为指定的秒数,如果不设定生命周期,那么 Cookie 将在浏览器关闭时消失。 ```java Cookie...