请记住,cookie就是文档的一个字符串属性。要保存cookie,只要建立一个字符串,格式是name=<value>(名称=值),然后把文档的 document.cookie 设置成与它相等即可。比如,假设想保存表单接收到的用户名,那么代码看起来就象这样:
document.cookie = "username" + escape(form.username.value);
在这里,使用 escape() 函数非常重要,因为cookie值里可能包含分号、逗号或者空格。这就是说,在读取cookie值时,必须使用对应的unescape()函数给值解码。
我们当然还得介绍cookie的四个属性。这些属性用下面的格式加到字符串值后面:
name=<value>[; expires=<date>][; domain=<domain>][; path=<path>][; secure]
名称=<值>[; expires=<日期>][; domain=<域>][; path=<路径>][; 安全]
<value>, <date>, <domain> 和 <path> 应当用对应的值替换。<date> 应当使用GMT格式,可以使用Javascript脚本语言的日期类Date的.toGMTString() 方法得到这一GMT格式的日期值。方括号代表这项是可选的。比如在 [; secure]两边的方括号代表要想把cookie设置成安全的,就需要把"; secure" 加到cookie字符串值的后面。如果"; secure" 没有加到cookie字符串后面,那么这个cookie就是不安全的。不要把尖括号<> 和方括号[] 加到cookie里(除非它们是某些值的内容)。设置属性时,不限属性,可以用任何顺序设置。
下面是一个例子,在这个例子里,cookie "username" 被设置成在15分钟之后过期,可以被服务器上的所有目录访问,可以被"mydomain.com"域里的所有服务器访问,安全状态为安全。
// Date() 的构造器设置以毫秒为单位
// .getTime() 方法返回时间,单位为毫秒
// 所以要设置15分钟到期,要用60000毫秒乘15分钟
var expiration = new Date((new Date()).getTime() + 15 * 60000);
document.cookie = "username=" + escape(form.username.value)+ "; expires ="
+ expiration.toGMTString() + "; path=" + "/" + "; _
domain=" + "mydomain.com" + "; secure";
读取cookies值有点象个小把戏,因为你一次就得到了属于当前文档的所有cookies。
// 下面这个语句读取了属于当前文档的所有cookies
var allcookies = document.cookie;
现在,我们得解析allcookies变量里的不同cookies,找到感兴趣的指定cookie。这个工作很简单,因为我们可以利用Javascript语言提供的扩展字符串支持。
如果我们对前面分配的cookie "username" 感兴趣,可以用下面的脚本来读取它的值。
// 我们定义一个函数,用来读取特定的cookie值。
function getCookie(cookie_name)
{
var allcookies = document.cookie;
var cookie_pos = allcookies.indexOf(cookie_name);
// 如果找到了索引,就代表cookie存在,
// 反之,就说明不存在。
if (cookie_pos != -1)
{
// 把cookie_pos放在值的开始,只要给值加1即可。
cookie_pos += cookie_name.length + 1;
var cookie_end = allcookies.indexOf(";", cookie_pos);
if (cookie_end == -1)
{
cookie_end = allcookies.length;
}
var value = unescape(allcookies.substring(cookie_pos, cookie_end));
}
return value;
}
// 调用函数
var cookie_val = getCookie("username");
上面例程里的 cookie_val 变量可以用来生成动态内容,或者发送给服务器端CGI脚本进行处理。现在你知道了使用Javascript脚本操纵cookies的基本方法。但是,如果你跟我一样,那么我们要做的第一件事,就是建立一些接口函数,把cookies处理上的麻烦隐藏起来。不过,在你开始编程之前,稍候片刻。这些工作,早就有人替你做好了。你要做的,只是到哪去找这些接口函数而已。
比如,在David Flangan的Javascript: The Definitive Guide 3rd Ed.这本书里,可以找到很好的cookie应用类。你也可以在Oreilly的WEB站点上找到这本书里的例子。本文最后的链接列表里,有一些访问这些cookie示例的直接链接。
Cookies 怪兽
因为某些原因Cookies 的名声很不好。许多人利用cookies做一些卑鄙的事情,比如流量分析、点击跟踪。Cookies 也不是非常安全,特别是没有secure属性的cookies。不过,即使你用了安全的cookies,如果你和别人共用计算机,比如在网吧,那么别人就可以窥探计算机硬盘上未加密保存的cookie文件,也就有可能窃取你的敏感信息。所以,如果你是一个WEB开发人员,那么你要认真考虑这些问题。不要滥用cookies。不要把用户可能认为是敏感的数据保存在cookies里。如果把用户的社会保险号、信用卡号等保存在cookie里,等于把这些敏感信息放在窗户纸下,无异于把用户投到极大危险之中。一个好的原则是,如果你不想陌生人了解你的这些信息,那就不要把它们保存在cookies里。
另外,cookies还有一些实际的限制。Cookies保留在计算机上,不跟着用户走。如果用户想换计算机,那么新计算机无法得到原来的cookie。甚至用户在同一台计算机上使用不同浏览器,也得不到原来的cookie:Netscape 不能读取Internet Explorer 的cookies。
还有,用户也不愿意接受cookies。所以不要以为所有的浏览器都能接受你发出的cookies。如果浏览器不接受cookies,你要保证自己的WEB站点不致因此而崩溃或中断。
另外WEB 浏览器能保留的cookies不一定能超过300个。也没有标准规定浏览器什么时候、怎么样作废cookies。所以达到限制时,浏览器能够有效地随机删除cookies。浏览器保留的来自一个WEB服务器上的cookies,不超过20个,每个cookie的数据(包括名称和值),不超过4K字节。(不过,本文里的cookie尺寸没问题,它只占了12 K字节,保存在3个3 cookies里。)
简而言之,注意保持cookie简单。不要依赖cookies的存在,不要在每个cookie里保存太多信息。不要保存太多的cookes。但是,抛除这些限制,在技巧高超的WEB管理员手里,cookie的概念是一个有用的工具。
分享到:
相关推荐
并且在Cookie详解这篇文章中,介绍了如何在服务器端和使用JavaScript创建Cookie,并设置属性。 我们知道,Cookie是存储在客户端的,并且现在前后端分离慢慢变得流行起来,因此如何在浏览器上可以使用方便快捷的...
主要介绍了JavaScript操作Cookie详解,本文讲解了什么是Cookie、Cookie基础知识、Cookie常见问题、cookie 有两种清除方式、Cookie基础用法、Cookie高级用法等内容,需要的朋友可以参考下
当一个Cookie被设置为HttpOnly时,JavaScript无法通过Document.cookie API或其他方式访问到这个Cookie。这样一来,即使网页中存在XSS漏洞,恶意脚本也无法窃取到包含敏感信息的Cookie,从而降低了攻击者盗取用户身份...
### JavaScript针对Cookie的基本操作实例详解 #### 概述 在Web开发中,Cookie是一种非常重要的技术,用于在客户端存储小量的数据。通过Cookie,开发者可以在用户浏览器上保存一些信息,如用户偏好设置或登录状态等...
JavaScript中的Cookie管理和操作是Web开发中的基础技能,用于存储客户端数据。传统的操作方式主要依赖于`document.cookie`属性,但这种方式存在一些限制,比如字符长度限制、无法直接操作多个Cookie等。随着浏览器...
Cookie 详解 Cookie 是一种在 Web 应用程序中存储用户特定信息的方法。它是一小段文本信息,伴随着用户请求和页面在 Web 服务器和浏览器之间传递。Cookie 包含每次用户访问站点时 Web 应用程序都可以读取的信息。 ...
"Cookies.js - JavaScript 客户端的Cookie操作库" 进一步明确了这个库是Cookies.js,它是专门为JavaScript开发设计的,主要功能是在用户浏览器上执行Cookie的相关操作。作为客户端库,它使得开发者无需后端服务器...
### Cookie详解 #### 一、会话跟踪技术概述 会话跟踪是Web开发中的关键环节之一,用于确保用户的每次操作都被正确地关联到相应的会话中。常见的会话跟踪技术主要包括Cookie与Session。 #### 二、Cookie机制 ####...
### 使用JavaScript操作Cookie详解 #### 一、Cookie简介 Cookie是一种服务器端发送到客户端的小型文本文件,存储在客户端硬盘上。当用户访问网站时,这些Cookie会被重新发送回服务器,以便服务器能够识别用户并...
### JavaScript操作Cookie知识点详解 #### 一、Cookie简介 Cookie是一种小型的数据文件,通常由服务器发送到客户端(浏览器),客户端将这些数据存储在本地硬盘上,并在后续与该服务器进行交互时将数据发送回...
### JavaScript 操作 Cookie 的知识点详解 #### 一、概述 在Web开发中,Cookie是一种用于存储用户信息的小型文本文件,常被用来实现用户状态跟踪的功能。通过JavaScript,我们可以非常方便地对Cookie进行读取、存取...
### jQuery 操作 Cookie 的方法详解 #### 一、前言 在前端开发中,通过 JavaScript 操作 Cookie 是一种常见的需求,尤其是为了实现用户状态的持久化存储或网站配置的保存等场景。jQuery 提供了一个非常方便的方式...
JavaScript提供了一组方法,可以让我们在客户端对Cookie进行操作,包括设置、读取和删除Cookie。本文详细介绍了这三种操作的方法,并提供了相应的示例代码,帮助开发者更好地理解如何在JavaScript中使用Cookie。 ...
js-cookie是一个非常小巧且功能强大的JavaScript库,用于在浏览器端操作Cookie。它的源代码大小仅为3.34 KB,且支持npm和Bower进行管理和安装,这使得它在各种项目中易于集成。作为一个独立的库,js-cookie无需任何...
《jQuery之Cookie.js详解》 在Web开发中,Cookie是一种重要的数据存储机制,它允许服务器在客户端(浏览器)上保存信息。jQuery库提供了一个方便的插件——jQuery.cookie.js,使得处理Cookie的操作变得简单易行。...
总结起来,JavaScript中的Cookie是通过`document.cookie`进行读写的,创建Cookie时需要设置其名称、值、过期时间等属性,读取时则需要解析`document.cookie`字符串。删除Cookie则通过设置过期时间为过去来实现。理解...
### JavaScript Cookie 操作详解 #### 一、引言 在Web开发中,Cookie是一种非常重要的技术,用于在客户端存储小量的数据。通过Cookie,开发者能够实现用户状态的持久化存储,比如保存用户的登录状态、个性化设置等...
《jQuery 1.4.2与jQuery Cookie插件详解》 在Web开发中,JavaScript库jQuery因其简洁的语法和强大的功能而备受青睐。本篇将深入探讨jQuery 1.4.2版本及其与jQuery Cookie插件的使用,帮助开发者更好地理解和应用这...
本文将详细讲解如何在Axios中配置Cookie跨域以及相关的后端设置。 首先,我们要明确一点:默认情况下,Axios在发起跨域请求时并不会携带Cookie。这是因为浏览器的安全策略限制,为了防止跨站脚本攻击(Cross-Site ...