Cookies
Cookies were originally invented by Netscape to give 'memory' to web servers and browsers. The HTTP
protocol, which arranges for the transfer of web pages to your browser and browser requests for
pages to servers, is state-less
, which means that once the server has sent a page to a browser
requesting it, it doesn't remember a thing about it. So if you come to the same web page a
second, third, hundredth or millionth time, the server once again considers it the very first time you ever came there.
This can be annoying in a number of ways. The server cannot remember if you identified
yourself when you want to access protected pages, it cannot remember your user preferences, it
cannot remember anything. As soon as personalization was invented, this became a major problem.
Cookies were invented to solve this problem. There are other ways to solve it, but cookies are
easy to maintain and very versatile.
How cookies work
A cookie is nothing but a small text file that's stored in your browser. It contains some data:
- A name-value pair containing the actual data
- An expiry date after which it is no longer valid
- The domain and path of the server it should be sent to
As soon as you request a page from a server to which a cookie should be sent, the cookie
is added to the HTTP header. Server side programs can then read out the information
and decide that you have the right to view the page you requested or that you want your links
to be yellow on a green background.
So every time you visit the site the cookie comes from, information about you is available.
This is very nice sometimes, at other times it may somewhat endanger your privacy. Fortunately
more and more browsers give you the opportunity to manage your cookies (deleting the one
from the big ad site, for example).
Cookies can be read by JavaScript too. They're mostly used for storing user preferences.
name-value
Each cookie has a name-value pair
that contains the actual information. The name
of the cookie is for your benefit, you will search for this name when reading out the cookie
information.
If you want to read out the cookie you search for the name and see what value is attached to it.
Read out this value. Of course you yourself have to decide which value(s) the cookie can have and
to write the scripts to deal with these value(s).
Expiry date
Each cookie has an expiry date
after which it is trashed. If you don't specify
the expiry date the cookie is trashed when you close the browser. This expiry date should
be in UTC (Greenwich) time.
Domain and path
Each cookie also has a domain
and a path
. The domain tells the browser
to which domain the cookie should be sent. If you don't specify it, it becomes the domain of
the page that sets the cookie, in the case of this page www.quirksmode.org
.
Please note that the purpose of the domain is to allow cookies to cross sub-domains. My cookie
will not be read by search.quirksmode.org because its domain is www.quirksmode.org . When I set the
domain to quirksmode.org, the search sub-domain may also read the cookie.
I cannot set the cookie domain to a domain I'm not in, I cannot make the domain www.microsoft.com .
Only quirksmode.org is allowed, in this case.
The path
gives you the chance to specify a directory where the cookie is active.
So if you want the cookie to be only sent to pages in the directory cgi-bin, set the
path to /cgi-bin
. Usually the path is set to /
, which means the cookie is
valid throughout the entire domain.
This script does so, so the cookies you can set on this page will be sent to any page in the
www.quirksmode.org
domain (though only this page has a script that searches for the
cookies and does something with them).
document.cookie
Cookies can be created, read and erased by JavaScript. They are accessible through the
property document.cookie
. Though you can treat document.cookie as if it's a
string
, it isn't really, and you have only access to
the name-value
pairs.
If I want to set a cookie for this domain with a
name-value pair 'ppkcookie1=testcookie' that expires in seven days from the moment I
write this sentence, I do
document.cookie =
'ppkcookie1=testcookie; expires=Thu, 2 Aug 2001 20:47:11 UTC; path=/'
First the name-value pair ('ppkcookie1=testcookie
')
- then a semicolon and a space
then the expiry date in the correct format ('expires=Thu, 2 Aug 2001 20:47:11 UTC
')
- again a semicolon and a space
then the path (path=/
)
This is a very strict syntax, don't change it!
(Of course the script manages these dirty bits for you)
Also, even though it looks like I'm writing this whole string to the string document.cookie,
as soon as I read it out again I only see the name-value pair:
ppkcookie1=testcookie
If I want to set another cookie, I again do
document.cookie =
'ppkcookie2=another test; expires=Fri, 3 Aug 2001 20:47:11 UTC; path=/'
The first cookie is not overwritten, as it would when document.cookie
would be
a real string. Instead the second one is added to document.cookie
, so if we read it out we get
ppkcookie1=testcookie; ppkcookie2=another test
If I reset a cookie
document.cookie =
'ppkcookie2=yet another test; expires=Fri, 3 Aug 2001 20:47:11 UTC; path=/'
the old cookie is overwritten and document.cookie reads
ppkcookie1=testcookie; ppkcookie2=yet another test
To read out a cookie you have to treat document.cookie as a
string
and search for certain characters
(semicolons, for instance) and for the cookie name. I'll explain how to do it below.
Finally, to remove a cookie, set it with an expiry date before today. The browser sees
that the cookie has expired and removes it.
document.cookie =
'ppkcookie2=yet another test; expires=Fri, 27 Jul 2001 02:47:11 UTC; path=/'
function createCookie(name,value,days) {
if (days) {
var date = new Date();
date.setTime(date.getTime()+(days*24*60*60*1000));
var expires = "; expires="+date.toGMTString();
}
else var expires = "";
document.cookie = name+"="+value+expires+"; path=/";
}
function readCookie(name) {
var nameEQ = name + "=";
var ca = document.cookie.split(';');
for(var i=0;i < ca.length;i++) {
var c = ca[i];
while (c.charAt(0)==' ') c = c.substring(1,c.length);
if (c.indexOf(nameEQ) == 0) return c.substring(nameEQ.length,c.length);
}
return null;
}
function eraseCookie(name) {
createCookie(name,"",-1);
}
分享到:
相关推荐
一个封装好的cookie操作类,完成对Cookie 的增删改查等操作。
NULL 博文链接:https://conkeyn.iteye.com/blog/423550
这个文件包含了javascript对浏览器cookie文件的设置、读、写、删除四个函数,非常好用。
本文实例讲述了javascript cookie用法。分享给大家供大家参考,具体如下: 一、什么是 cookie? cookie 就是页面用来保存信息,比如自动登录、记住用户名等等。 二、cookie 的特点 同个网站中所有的页面共享一套 ...
javascript cookie的操作,set、get、clear
js实现页面与页面之间传值, js利用地址栏URL传值, 利用H5 Web 存储 传值, 利用JavaScript Cookie存储 传值
javascript操作cookie的三个函数非常方便。验证过的,实践过的。
Cookies.js - JavaScript 客户端的Cookie操作库
javascript cookie解码函数
用cookies记录用户的访问时间与次数,然后再次访问时,在读取。
通过函数获取JavaScript cookie
5个jsp源码实例包括:输出,获取表单参数,获取jsp各种参数,cookie,搜索引擎
简单的Cookie 这是一个非常简单的超轻量级JavaScript cookie类,可根据需要使用。 它有4种简单的方法...设置Cookie Cookie . set ( 'name' , 'value' ) 您也可以使用它来设置到期时间,默认情况下它永不到期。 到期...
曲奇饼干同构JavaScript cookie库。 包装以在客户端和服务器上工作。 此外,还需要快速解析Cookie(目前)。用法获取一个cookie // client-side// automatically parses the cookies for the pagevar cookie = ...
主要介绍了JavaScript cookie原理及使用实例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
JavaScript cookie详解 一、cookie基本介绍 cookie是document的对象。cookie可以使得JavaScript代码能够在用户的硬盘上持久地存储数据,并且能够获得以这种方式存储的数据。cookie还可以用于客户端脚本化。 ...
javascript cookie的基本操作(添加和删除) 1.添加一个cookie:response.addCookie(Cookie c); 2.获取cookie集合: request.getCookies(); 3.新建一个cookie: new Cookie(String name,String value) — Cookie在...
JavaScript Cookie Cookie 用于存储 web 页面的用户信息。 什么是 Cookie? Cookie 是一些数据, 存储于你电脑上的文本文件中。 当 web 服务器向浏览器发送 web 页面时,在连接关闭后,服务端不会记录用户的信息。 ...
本文实例讲述了javascript cookie基础应用之记录用户名的方法。分享给大家供大家参考,具体如下: 前面有一篇关于cookie基础的文章,封装了 cookie.js,下面我们通过一个实例来应用这个 js。 最常见的就是记住用户名...