`

Cookie的组成

阅读更多

Cookie的组成

下面讲解一下Cookie的组成,对HTTP不太熟悉的读者可以暂时跳过这段,等到阅读和运行一些代码后,就会有直观的理解。
Cookie在HTTP的头部Header信息中,HTTP Set-Cookie的Header格式如下:

Set-Cookie: name=value; [expires=date]; [path=path];
[domain=domainname]; [secure];

下面是在HTTP代码中一个具体的例子:

<meta http-equiv="set-cookie" content=" cookieName = cookieValue;
expires=01-Dec-2006 01:14:26 GMT; path=/" />

从上面的格式可以看出,Cookie由下面几部分组成。

(1) Name/Value对

其格式如下:

cookieName=cookieValue

Name/Value由分号分隔。一个Cookie最多有20对,每个网页最多有一个Cookie,Value的长度不超过4K。对于Value值,最好用encodeURIComponent对其编码。

(2) Domain

Domain域名也是Cookie的一部分,默认情况下,用户访问网页的域名会存放在Cookie中。如果设置了这个Cookie的域名值,那么意味着域名上的所有服务器,而不仅是你正在访问的服务器,都能访问这个Cookie,通常不要这样做。设置域名的格式如下:

domain=http://xyz.com

(3) path

path设置对于特定的服务器来说哪个目录中的网页可访问Cookie。设置path的格式是:

path = /movies

(4) Expires

设置Cookie存活的时间,默认情况下,用户关闭浏览器则Cookie自动删除,如果没有设置Cookie失效的时间,那么用户关闭浏览器时Cookie也消失。如果设置该项,就能延长Cookie的生命期。设置时间在JavaScript中用Date对象的GMT形式,格式如下:

expires = date.toGMTString()

其中date是一个Date对象。

在Java中,可以用Java API设置。

如果Cookie的时间早于目前的时间,就删除Cookie。读者在一些网站上,可能会发现网站询问你保存登录信息多长时间(当天、3个月等),很可能就是通过设置该项来实现的。

(5) Secure

取true或者false值。如果为true,那么必须通过https发送Cookie。


另篇,Cookie的格式要素及其定义:


 Cookie由变量名和值组成,类似Javascript变量。其属性里既有标准的Cookie变量,也有用户自己创建的变量,属性中变量是用“变量=值”形式来保存。
  根据Netscape公司的规定,Cookie格式如下:

  Set-Cookie: NAME=VALUE;Expires=DATE;Path=PATH;Domain=DOMAIN_NAME;SECURE NAME=VALUE:

  这是每一个Cookie均必须有的部分。NAME是该Cookie的名称,VALUE是该Cookie的值。在字符串“NAME=VALUE”中,不含分号、逗号和空格等字符。
  Expires=DATE:Expires变量是一个只写变量,它确定了Cookie有效终止日期。该属性值DATE必须以特定的格式来书写:星期几,DD-MM-YY HH:MM:SS GMT,GMT表示这是格林尼治时间。反之,不以这样的格式来书写,系统将无法识别。该变量可省,如果缺省时,则Cookie的属性值不会保存在用户的硬盘中,而仅仅保存在内存当中,Cookie文件将随着浏览器的关闭而自动消失。
  Domain=DOMAIN-NAME:Domain该变量是一个只写变量,它确定了哪些Internet域中的Web服务器可读取浏览器所存取的Cookie,即只有来自这个域的页面才可以使用Cookie中的信息。这项设置是可选的,如果缺省时,设置Cookie的属性值为该Web服务器的域名。
  Path=PATH:Path属性定义了Web服务器上哪些路径下的页面可获取服务器设置的Cookie。一般如果用户输入的URL中的路径部分从第一个字符开始包含Path属性所定义的字符串,浏览器就认为通过检查。如果Path属性的值为“/”,则Web服务器上所有的WWW资源均可读取该Cookie。同样该项设置是可选的,如果缺省时,则Path的属性值为Web服务器传给浏览器的资源的路径名。
  可以看出我们借助对Domain和Path两个变量的设置,即可有效地控制Cookie文件被访问的范围。
  Secure:在Cookie中标记该变量,表明只有当浏览器和Web Server之间的通信协议为加密认证协议时,浏览器才向服务器提交相应的Cookie。当前这种协议只有一种,即为HTTPS。 

           Cookies以键值的方式记录会话跟踪的内容.服务器利用响应报头Set-Cookie来发送COOKIE信息.在RFC2109中定义的SET-COOKIE响应报头的格式为:
Set-Cookie: Name = Value; Comment = value; Domain = value; Max-Age = value; Path = Value;
Secure; Version = 1 * DIGIT;

Name是Cookie的名字,Value是它的值.Name=Value属性值对必须首先出现,在此之后的属性-值对可以以任何顺序出现. 在Servlet规范中,用于会话跟踪的cookie的名字必须是JSESSIONID。
Comment属性是可选的,因为Cookie可能包含其它有关用户私有的信息.这个属性允许服务器说明这个Cookie的使用,用户可以检查这个消息,然后决定是否加入或继续会话。
Domain属性也是可选的.它用来指定Cookie在哪一个域中有效.所指定的域必须以点号(.)来开始。
Max-Age属性是可选的,用于定义Cookie的生存时间,以秒为单位.如果超过了这个时间,客户端就应该丢弃这个cookie.如果指定的秒数为0,表示这个cookie应立即被丢弃。
Path属性是可选的,用于指定这个cookie在哪一个URL子集下有效。
Secure属性是必需的,它的值是一个十进制数,标识cookie依照的状态管理规范的版本。
例如:
set-cookie: uid = Linda; Max-Age=3600; Domain=.sun.org; Path=/bbs; Version=1
它表示一个名为uid,值为Linda的cookie.生存时间为3600秒,在sunxin.org域的 bbs路径下有效.在3600秒后,客户端将抛弃这个cookie. 当IE收到上面这个响应报头后,可以选择接受或拒绝这个cookie.如果ID接受了这个cookie,当浏览器下一次发送请求到
hxxp://www.xxx.com/bbs路径下的资源时,同时也会发送以下的请求报头:
cookie:uid=zhangsan.

分享到:
评论
2 楼 ueseu 2012-07-13  
引用
(2) Domain
Domain域名也是Cookie的一部分,默认情况下,用户访问网页的域名会存放在Cookie中。如果设置了这个Cookie的域名值,那么意味着域名上的所有服务器,而不仅是你正在访问的服务器,都能访问这个Cookie,通常不要这样做。设置域名的格式如下:
domain=http://xyz.com


引用
Domain属性也是可选的.它用来指定Cookie在哪一个域中有效.所指定的域必须以点号(.)来开始。


矛盾?
1 楼 ueseu 2012-07-13  
引用
Secure
取true或者false值。如果为true,那么必须通过https发送Cookie。


引用
Secure属性是必需的,它的值是一个十进制数,标识cookie依照的状态管理规范的版本。


引用
set-cookie: uid = Linda; Max-Age=3600; Domain=.sun.org; Path=/bbs; Version=1


矛盾 ?

相关推荐

    JS添加Cookie的例子

    读取Cookie则相对简单,因为`document.cookie`返回的是所有Cookie组成的字符串,我们需要将其拆分并解析。这里有一个读取Cookie的函数: ```javascript function getCookie(name) { var cookieArr = document....

    取网页Cookie.rar

    例如,`document.cookie`返回的是所有Cookie组成的字符串,需要解析这个字符串来获取单个Cookie的信息。 - **浏览器开发者工具**:大多数现代浏览器都内置了开发者工具,其中的“网络”或“资源”面板可以查看HTTP...

    获取cookie

    1. 获取Cookie:使用`document.cookie`属性,但返回的是所有Cookie组成的字符串,需要通过解析来获取特定Cookie。例如: ```javascript function getCookie(name) { var cookies = document.cookie.split('; '); ...

    基于js实现的客户端Page Cookie (maintaining page state)的状态管理例子

    由于`document.cookie`返回的是所有Cookie组成的字符串,我们需要解析这个字符串来获取特定的Cookie值: ```javascript function getCookie(key) { const cookies = document.cookie.split(';'); for (let i = 0; ...

    js 操作 COOKIE 读写删

    读取Cookie则需要解析`document.cookie`字符串,因为该属性返回的是所有Cookie组成的字符串,每条Cookie之间用分号分隔。以下是一个简单的读取函数: ```javascript function getCookie(name) { var cookieArr = ...

    jquery.cookie14.js改成js文件可以使用

    如果没有指定`key`,则会返回所有Cookie组成的对象: ```javascript var username = $.cookie('username'); // 返回字符串 var allCookies = $.cookie(); // 返回对象 ``` 如果Cookie中存储的是JSON数据,则可以...

    javascript经典特效---cookie的写入.rar

    读取Cookie时,由于`document.cookie`返回的是所有Cookie组成的字符串,我们需要将其分割并解析。以下是一个简单的读取函数: ```javascript function getCookie(name) { var cookieArr = document.cookie.split(...

    前端Cookie工具,获取Cookie数据,获取Cookie数据key名称,清除站点所有Cookie数据

    Cookie是由服务器端设置并在客户端存储的一小段文本信息,它由一个或多个键值对组成,每个键值对之间用分号(;)隔开。当浏览器向服务器发送请求时,会自动将该域下的所有Cookie附带在HTTP头部发送回去。 **获取...

    c#封装的cookie操作类

    每个Cookie由一个名称(Name)、值(Value)、过期时间(Expires)以及域(Domain)等属性组成。域决定了Cookie可以在哪些网站上使用,而过期时间则指定了Cookie何时失效。 二、Cookie操作类设计 1. **读取Cookie**...

    cookie学习练习记录

    总结起来,Cookie在Web开发中扮演了不可或缺的角色,尽管在前后端分离的趋势下其使用频率有所下降,但仍然是理解Web交互和用户状态管理的重要组成部分。通过“Cookie学习练习记录”这样的实践项目,开发者可以更好地...

    javascript技巧

    - **读取Cookie**:同样通过`document.cookie`,但需要注意的是,它返回的是所有Cookie组成的一个字符串,需要通过分割字符串的方式来解析。 - **修改和删除Cookie**:修改Cookie通常需要重新创建一个包含新值的...

    JAVA之cookie与session

    1. **Cookie的结构**:Cookie 由名称、值和一系列可选属性组成。这些属性包括过期时间、路径、域、安全标志等。 2. **生命周期**:Cookie 可以被设置为永久或临时。永久 Cookie 即使关闭浏览器后也会保留,而临时 ...

    PHP中cookie知识点学习

    cookie组成 cookie由以下几部分组成: domain,cookie所属的域名。浏览器发送cookie时,会检查cookie所属的域名,相符才会发送。浏览器会将tlanyan.me域下的cookie发送到www.tlanyan.me或者dev.tlanyan.me的页面请求...

    JavaScript数据存储 Cookie篇

    本文将深入探讨Cookie的基本概念、组成部分、操作方法以及相关注意事项。 1. **Cookie的基本概念** Cookie是由Web服务器发送到用户浏览器并存储在本地的一小段文本信息,当用户再次向同一Web服务器发送请求时,...

    documentCookie的使用

    每个Cookie由名称(cookieName)和值(cookieValue)组成,用等号分隔,如`cookieName=cookieValue`。多个Cookie之间使用分号加空格(`; `)分隔。每个Cookie还有其生命周期,即失效日期,超过该日期则会被浏览器...

    .net最完整的cookie操作类

    .NET框架中的Cookie操作是Web开发中的重要组成部分,用于在客户端和服务器之间传递状态信息。Cookie是一种小型文本文件,由服务器发送到用户的浏览器,并由浏览器在后续请求时返回给服务器。在C#中,处理Cookie主要...

    JS Cookie的操作

    每个Cookie由多个键值对组成,每个键值对之间用分号或逗号隔开。 二、创建Cookie 在JavaScript中,我们通常使用`document.cookie`来创建Cookie。以下是一个创建Cookie的示例: ```javascript function setCookie...

    Cookie、Session和Token三者的区别及使用

    **主要组成部分**: - **名称与值**: 存储特定的信息,例如用户名。 - **过期时间**: 指定Cookie的有效期限,如果没有指定,则默认为会话Cookie(即浏览器关闭后删除)。 - **路径**: 指定哪些路径下的请求将会携带该...

    cookie编程

    1. **Cookie的基本结构**:Cookie由名称、值、过期时间、路径、域等属性组成。每个Cookie都是一个键值对,服务器通过HTTP头将Cookie发送给客户端,客户端则会在后续的请求中自动携带这些Cookie回发。 2. **创建...

    aaaaaa.zip_cookie_cookie java_java cookie

    1. **定义**:Cookie是由服务器发送到用户浏览器并保存在本地的一小块数据,由一个名称、一个值、一个过期时间、一个路径、一个域和安全属性组成。 2. **类型**:有两种类型的Cookie,Session Cookie和Persistent ...

Global site tag (gtag.js) - Google Analytics