`

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


矛盾 ?

相关推荐

    selenium中get_cookies()和add_cookie()的用法详解

    在用selenium爬取网页的时候,有时候需要登陆,这时候用selenium获取cookie和携带cookie是很方便的,获取cookie可以通过内置的函数get_cookies(),它得到的是一组cookie,是由cookie组成的列表。单个的cookie是字典...

    JavaScript数据存储 Cookie篇

    2.cookie的组成部分?  ①名称:一个唯一确定cookie 的名称。建议区分大小写。cookie 的名称必须是经过URL 编码的。  ②值:储存在cookie 中的字符串值。值必须被URL 编码。  ③域:cookie 对于哪个域是有效的。...

    PHP中cookie知识点学习

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

    Cookie查看器(IECookieView)

    什么是cookies呢,Cookies是一个储存于浏览器目录中的文本文件,记录你访问一个特定站点的信息,且只能被创建这个Cookies的站点读回,约由255个字符组成,仅占4KB硬盘空间。当用户正在浏览某站点时,它储存于用户机...

    Cookie在web认证中的应用研究.pdf

    本篇着重讨论HTTP状态管理中最常用的cookie技术首先给出cookie的一般性概念,包括cookie的应用场合、组成和一般工作过程。然后给出其在Web客户端认证中的应用、安全性分析和相关措施及程序实现

    cookie-consent:Webflow的Cookie横幅

    在最后一个之后立即导入我们的Fs Cookie同意解决方案代码: https://cdn.jsdelivr.net/npm/@finsweet/cookie-consent@1/dist/fs-cc.js成分该解决方案包含三个不同的组件: 横幅标语是主要组成部分,也是页面上唯一...

    总结C#网络编程中对于Cookie的设定要点

    花了2天时间,彻底搞清C#中cookie的内容,搞清以下内容将让你对所有网站的cookie都尽在掌握之中. cookieCollection是一个...Cookie由变量名和值组成,类似Javascript变量。其属性里既有标准的Cookie 变量,也有用户自己创

    javascript中cookie对象用法实例分析

    本文实例讲述了javascript中cookie对象用法。分享给大家供大家参考。具体如下: 属性 name 唯一必须设置的属性,表示...domain 许多服务器由多台服务器组成,domain属性主要设置相同域下的多台服务器共享一个cookie,

    椭圆曲线加密结合cookie信息的物联网终端安全认证协议

    协议首先将用户身份信息、服务器私钥、随机数和cookie有效期信息组成一个cookie文件,然后利用椭圆曲线加密体制对其进行加密,并将之存储在智能终端。在认证阶段,通过比对由cookie信息计算的安全参数来实现相互身份...

    synsanity:netfilter(iptables)目标用于高性能无锁SYN cookie,以减轻SYN泛滥

    同步性-已弃用该项目已被弃用。 截至2017年,GitHub运行带有Linux内核。 synsanity是GitHub上生产中使用... 以下组件组成了协同关系及其支持的设置: 包含内核端iptables模块,其中大部分工作都在其中进行。 包含iptabl

    stick:JSGI中间件组成层和应用框架

    戳 Stick是的可扩展HTTP服务器框架,用于创建由“插件”(也称为“ JSGI中间件功能”)组成的模块化Web应用程序。 概述 用插件组成Web应用程序: ...cookie-读取HTTP cookie cors-跨站点HTTP请求访问控制 csrf-C

    CSS+JS+Cookie实现页脚固定广告展示(支持关闭、一段时间内不显示)

    本文将介绍使用CSS+Cookie来实现这一效果。 源码下载:点此下载 HTML 首先,我们将横幅广告的html代码放到页面最底部,因为是最后加载的。也可以使用外部js动态插入到页面底部。整个HTML结构由遮罩层.float_layer,...

    Requests:非常好用且可以友好托管HTTP请求的php类库

    Requests提供了一致的API,并且使用cURL或fsockopen(具体取决于可用性),它还简化了发送请求,接受HEAD、GET、POST、PUT、DELETE或PATCH并且添加标头、表单数据和多个部分组成的文件。其次,该库还适用于国际域名...

    Session对性能测试的影响

    Cookie是Web产品测试过程中不可缺少的一部分,我们需要通过Cookie信息辨别用户,得到属于自己的结果数据,例如DWR接口测试过程中,需要...但是,你有没有注意到你获得的Cookie是由什么组成的?是否包含NTES_SESS信息,是

    cookieguard:根据GDPR处理第三方服务

    Cookieguard库由JavaScript模块,主要Cookieguard对象和几个启用或禁用专用服务的Service对象组成。 版本计划 cookieguard库当前处于beta中。 几个网站都在生产中使用它,但是希望可以进行重大更改。 因此,当前的...

    php实现JWT(json web token)鉴权实例详解

    基于token的身份验证可以替代传统的cookie+session身份验证方法。 JWT由三个部分组成:header.payload.signature 以下示例以JWT官网为例 header部分: { alg: HS256, typ: JWT } 对应base64UrlEncode编码为:...

    web网站主题与皮肤构建

    整个网站由两个页面组成:一个是首页 default.aspx,它含有一个IFRAME(活动框架),嵌入了另一个 页面hr.aspx。在hr.aspx页面中,可以由用户的输入决定页面 中水平条的长度。只要用户选择不同的背景主题方案,整个...

    lockit:Express的身份验证解决方案

    它由多个单一目的模块组成: 目录 快速开始 完整安装 配置 数据库连接 发送邮件 自定义视图 大事记 报名 登录 登出 删除 忘了::已发送 忘了::成功 REST API 样本配置 特征 包含路线 快速开始 创建新的Express...

    当当网(达内项目)

    表现层应用JSP技术结合struts2标签,并应用JavaScript、AJAX、JQuery技术进行页面表单的客户端验证和异步服务器端验证,减少页面刷新,并运用cookie技术保存用户购物和浏览记录,提高用户体验。图书界面有用点击弹出...

    JavaScript基础&BOM,学习Java第42天

    Java Script由三个主要组成部分:ECMAScript(核心),BOM(浏览器对象模型),DOM(文档对象模型 注:ECMAScript描述了语法、类型、语句、关键字、保留字、运算符和对象。它就是定义了脚本语言的所有属性、方法和...

Global site tag (gtag.js) - Google Analytics