`
wuhua
  • 浏览: 2112216 次
  • 性别: Icon_minigender_1
  • 来自: 广州
社区版块
存档分类
最新评论

有关Cookie的一些东西。

    博客分类:
  • HTTP
阅读更多

目前有以下几种Cookie规范:

 

    * Netscape cookie草案:是最早的cookie规范,基于rfc2109。尽管这个规范与rc2109有较大的差别,但是很多服务器都与之兼容。

    * rfc2109, 是w3c发布的第一个官方cookie规范。理论上讲,所有的服务器在处理cookie(版本1)时,都要遵循此规范。遗憾的是,这个规范太严格了,以致很多服务器不正确的实施了该规范或仍在使用Netscape规范。

    * rfc2965规范定义了cookie版本2,并说明了cookie版本1的不足。

 

rfc2965规范的使用,目前并不多。rfc2109规范相应要严格得多,在实际应用上,并不是所有的浏览器和Web服务器都严格遵守。因此相比较而言,Netscape cookie草案倒是一个比较简洁和被广泛支持的Cookie规范,因此我们在这里以Netscape cookie草案为基础进行讨论,对于其他两种规范,我们的讨论和代码具有相同的意义。关于Netscape cookie草案的细节,大家可以参照Netscape官方站点,这里我们列举一些和我们讨论有关的内容。

 

根据Netscape cookie草案的描述,Cookie 是Web 服务器向用户的浏览器发送的一段ASCII码文本。一旦收到Cookie,浏览器会把Cookie的信息片断以"名/值"对(name-value pairs)的形式储存保存在本地。这以后,每当向同一个Web 服务器请求一个新的文档时,Web 浏览器都会发送之站点以前存储在本地的Cookie。创建Cookie的最初目的是想让Web服务器能够通过多个HTTP请求追踪客户。有些复杂的网络应用需要在不同的网页之间保持一致,它们需要这种会话状态的保持能力。

 

浏览器与Web服务器通过HTTP协议进行通讯,而Cookie就是保存在HTTP协议的请求或者应答头部(在HTTP协议中,数据包括两部分,一部分是头部,由一些名值对构成,用来描述要被传输数据的一些信息。一部分是主体(body),是真正的数据(如HTML页面等))进行传送的。

 

在HTML文档被发送之前,Web服务器通过传送HTTP 包头中的Set-Cookie 消息把一个cookie 发送到用户的浏览器中。下面是一个遵循Netscape cookie草案的完整的Set-Cookie 头:

 

 

Set-Cookie:customer=huangxp; path=/foo; domain=.ibm.com; 

expires= Wednesday, 19-OCT-05 23:12:40 GMT; [secure]

 

 

Set-Cookie的每个属性解释如下:

 

    * Customer=huangxp 一个"名称=值"对,把名称customer设置为值"huangxp",这个属性在Cookie中必须有。

    * path=/foo 控制哪些访问能够触发cookie 的发送。如果没有指定path,cookie 会在所有对此站点的HTTP 传送时发送。如果path=/directory,只有访问/directory 下面的网页时,cookie才被发送。在这个例子中,用户在访问目录/foo下的内容时,浏览器将发送此cookie。如果指定了path,但是path与当前访问的url不符,则此cookie将被忽略。

    * domain=.ibm.com 指定cookie被发送到哪台计算机上。正常情况下,cookie只被送回最初向用户发送cookie 的计算机。在这个例子中,cookie 会被发送到任何在.ibm.com域中的主机。如果domain 被设为空,domain 就被设置为和提供cookie 的Web 服务器相同。如果domain不为空,并且它的值又和提供cookie的Web服务器域名不符,这个Cookie将被忽略。

    * expires= Wednesday, 19-OCT-05 23:12:40 GMT 指定cookie 失效的时间。如果没有指定失效时间,这个cookie 就不会被写入计算机的硬盘上,并且只持续到这次会话结束。

    * secure 如果secure 这个词被作为Set-Cookie 头的一部分,那么cookie 只能通过安全通道传输(目前即SSL通道)。否则,浏览器将忽略此Cookie。

 

一旦浏览器接收了cookie,这个cookie和对远端Web服务器的连续请求将一起被浏览器发送。例如 前一个cookie 被存入浏览器并且浏览器试图请求URLhttp://www.ibm.com/foo/index.html时,下面的HTTP 包头就被发送到远端的Web服务器。

 

GET /foo/index.html HTTP/1.0

Cookie:customer=huangxp

 

Cookie的关键字介绍:

version  -- Cookie的版本号,现有的Cookie有Netscape cookie, rfc2109($Version=1),rfc2965($Version=2).

domain   -- 域名,规范来说,是不区分端口号的

path     -- 路径,请求的URL中包含这类路径下的所有cookie都应该发送

expires  -- 过期时间,标准的HTTP GMT标准时间格式。

max-age  -- 过期时间,相对的时间格式,比如3600,表示接受到cookie的时间+3600秒,单位是秒。

HttpOnly -- 好像是IE的遗留问题。

 

Cookie 语法规则

服务器端:

   set-cookie      =       "Set-Cookie:" cookies

   cookies         =       1#cookie

   cookie          =       NAME "=" VALUE *(";" cookie-av)

   NAME            =       attr

   VALUE           =       value

   cookie-av       =       "Comment" "=" value

                   |       "Domain" "=" value

                   |       "Max-Age" "=" value

                   |       "Path" "=" value

                   |       "Secure"

                   |       "Version" "=" 1*DIGIT

 

客户端:

cookie          =       "Cookie:" cookie-version

                           1*((";" | ",") cookie-value)

   cookie-value    =       NAME "=" VALUE [";" path] [";" domain]

   cookie-version  =       "$Version" "=" value

   NAME            =       attr

   VALUE           =       value

   path            =       "$Path" "=" value

   domain          =       "$Domain" "=" value


分享到:
评论

相关推荐

    cookie导出插件1.4.1

    描述中提到的“好东西,web开发必要的小工具”,意味着这个插件是Web开发者工具箱中的一个重要组成部分,能够帮助他们高效地处理cookie相关任务。能够“直接导出cookie”的特性尤其实用,因为这使得开发者可以快速...

    ie cookie 查看和修改器

    描述中的“ie cookie 查看 修改 好东西吧算是”表明这个工具对用户可能很有用,因为能够帮助用户更好地管理他们的在线数据。查看Cookie可以帮助用户了解哪些网站正在跟踪他们的活动,而修改Cookie则可能有助于用户在...

    Session、Cookie、Token的关系。以及Cookie的局限性

    在Web开发中,Session、Cookie和Token是三种常见的身份验证机制,它们各有特点,并在不同的场景下发挥着关键作用。理解它们的关系以及Cookie的局限性对于构建安全的Web应用程序至关重要。 首先,让我们来探讨...

    php操作cookie的方法

    很全的php控制cookie的方法,我以前没有接触过这方面的东西,后来通过一个项目总结的。

    网页多开程序(可以用不同的cookie进行登陆)

    可以双开网页用不同 的cookie 进行登陆! 是个相当不错的东西哟!

    cookie-banner:Cookie横幅

    在本文中,我们将深入探讨Cookie横幅的原理、用途、实现方式以及相关的隐私法规。 首先,理解Cookie的基本概念至关重要。Cookie是服务器发送到用户浏览器并存储在本地的一小段数据,用于跟踪用户行为、保存登录状态...

    try-elm-cookie:测试elm-cookie的东西

    【标题】"try-elm-cookie:测试elm-cookie的东西"是一个项目,主要目的是为了测试一个名为"elm-cookie"的库。这个库很可能是一个针对Elm编程语言的Cookie管理工具,允许开发者在Elm应用程序中处理用户的Cookie信息。...

    Jmeter跨线程组共享cookie过程图解

    "Jmeter跨线程组共享cookie过程图解" Jmeter跨线程组共享cookie是一个基础而重要的技术,在性能测试中非常有用。本文将详细介绍Jmeter跨线程组共享cookie的过程图解,通过示例代码和详细的解释,帮助读者更好地理解...

    Python Web框架之Django框架cookie和session用法分析

    本文实例讲述了Python Web框架之Django框架cookie和session用法。分享给大家供大家参考,具体如下: part 1 概念 在Django里面,cookie和session都记录了客户端的某种状态,用来跟踪用户访问网站的整个回话。 两者...

    ASP.NET学习CORE中使用Cookie身份认证方法

    现在到了ASP.NET CORE的时代,但是ASP.NET CORE中没有FormsAuthentication这个东西,那么怎么做身份认证呢?答案是ASP.NET CORE已经为我们内置了Cookie身份认证的功能,而且使用起来非常方便,注意本文是基于ASP.NET...

    javascript封装 Cookie 应用接口

    本文章记录本人在学习 Cookie 中看书理解到的一些东西,加深记忆和并且整理记录下来,方便之后的复习。 封装函数 在默认的情况下存取Cookie是一件比较麻烦的事情。由于Cookie是通过字符串来存储信息的,所以容易导致...

    cookie提取:登录后提取在线cookie,更新至服务器或副本至剪切板,为爬虫抓取跳过复杂验证码识别程序

    就是这个东西有着很多程序的自动化工作止步,让人懊恼不已。 Cookies提取助手的出现,可以通过手工输入验证码,免去程序实现验证码识别的繁琐实现,提取有效可用的Cookie,提供给爬虫抓取程序,实现免验证码爬取。 ...

    3分钟快速学会在ASP.NET Core MVC中如何使用Cookie

    所以我们在学习一个东西的时候,一定要做到知其然知其所以然。 HTTP协议本身是无状态的。什么是无状态呢,即服务器无法判断用户身份。Cookie实际上是一小段的文本信息)。客户端向服务器发起请求,如果服务器需要...

    pusheen-cookie-game:一个可爱的有趣游戏,用鼠标点击即可吃饼干

    Pusheen饼干吃游戏 为“开发我的星球”课程的开发者联盟小学生准备的快速展示项目,展示了一个使用Javascript的小例子。 项目技术时间表: setInterval最初用于计时Pusheens进餐。... 动画一些东西。

    VolleyCookie:使用截击保存 cookie 的示例

    排球曲奇使用截击保存 cookie 的示例1 - 将volley.jar从 libs 路径导入到您的项目2 - 在 build.gradle 依赖项中导入compile group: 'org.apache.... 我只需要这样的东西,我从 stackoverflow 写了一些代码。

    浅谈cookie和session(小结)

    在Java中,可以将我们自己的一些信息放进cookie,方法是将cookie信息放入到响应中,传递给浏览器。使用HttpServletResponse对象的addCookie()方法可以将cookie添加到响应头中。当我们发起这个请求时,在响应头有下列...

    细说Cookie

    Cookie虽然是个很简单的东西,但它又是WEB开发中一个很重要的客户端数据来源,而且它可以实现扩展性很好的会话状态,所以我认为每个WEB开发人员都有必要对它有个清晰的认识。本文将对Cookie这个话题做一个全面的描述...

    slack-my-cookie

    当然,这更是游戏化,而不是精确的东西。 首先,您必须创建一个slack命令来获取令牌 然后创建一个Webhook以获得您的URL 然后将此文件上传到WordPress网站的文件夹中(是的,实际上是WP已加载,即将独立发布) ...

Global site tag (gtag.js) - Google Analytics