【转】Cookie规范介绍

目前有以下几种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 被存入浏览器并且浏览器试图请求 URL http://www.ibm.com/foo/index.html 时,下面的HTTP 包头就被发送到远端的Web服务器。

GET /foo/index.html HTTP/1.0
Cookie:customer=huangxp

 

 

一次典型的网络浏览过程

在了解了Cookie协议的一些基本内容之后,让我们看看一次典型的网络浏览过程中浏览器如何识别和处理Cookie:

浏览器对于Web服务器应答包头中Cookie的操作步骤:
1. 从Web服务器的应答包头中提取所有的cookie。
2. 解析这些cookie的组成部分(名称,值,路径等等)。
3. 判定主机是否允许设置这些cookie。允许的话,则把这些Cookie存储在本地。
浏览器对Web服务器请求包头中所有的Cookie进行筛选的步骤:
1. 根据请求的URL和本地存储cookie的属性,判断那些Cookie能被发送给Web服务器。
2. 对于多个cookie,判定发送的顺序。
3. 把需要发送的Cookie加入到请求HTTP包头中一起发送。

 

Open UI5 源代码解析之1366:ParametersEditor.js 这个方法体现了参数过滤逻辑。代码注释写得很清楚:如果需要排除无效条目,只保留两类项目。原始条目显式带有类型,且类型属于允许集合。原始值是字符串,且允许集合中包含string。这说明在面对杂乱输入时,并不是照单全收。它会用type和允许类型清单做一次过滤。特别是第二个分支非常实用,因为在一些老配置或简化配置中,参数可能直接以字符串值出现,而没有完整类型声明。为了兼容这种情况,只要允许类型中包含string,它也会被当作有效参数。这体现出一个很典型的框架取舍:既要保证结构合法,又不能对历史数据过于苛刻。 阅读详情

相关推荐

set-cookie字段,cookie文件介绍+原理,如何查看cookie文件,在基于http协议服务器的代码实现,cookie存在问题+解决(会话机制)

set-cookie字段,cookie文件介绍+原理,如何查看cookie文件,在基于http协议服务器的代码实现,cookie存在问题+解决(会话机制)

m0_74206992的博客 4529

set-cookie 设置问题

原文链接:PolarisHuster 从上面两个图我们可以看出,虽然浏览器端有cookie,为什么在发送list请求时没有把本地的cookie带上呢,再看下面的截图: 上面两个截图我们可以看出,上面的list请求带上了Cookie信息,那么你不仅会疑问什么情况下http请求会把cookie带上,什么时候http请求不带cookie信息呢,解答这个疑问之前先了解些cookie相关的基础性的东西: Set-Cookie响应头字段(Response header)是服务器发送到浏览器或者其他客户端的一些

weixin_42287935的博客 1万+

Set-Cookie: JSESSIONID=8AB51DC4244907FD9EBB063C7FD73CBA; Path=/; HttpOnly

Set-Cookie: JSESSIONID=8AB51DC4244907FD9EBB063C7FD73CBA; Path=/; HttpOnly 解决此类cookie暴露项目路径问题

Cookie的规范介绍

   目前有以下几种Cookie规范:Netscape cookie草案:是最早的cookie规范,基于rfc2109。尽管这个规范与rc2109有较大的差别,但是很多服务器都与之兼容。 rfc2109, 是w3c发布的第一个官方cookie规范。理论上讲,所有的服务器在处理cookie(版本1)时,都要遵循此规范。遗憾的是,这个规范太严格了,以致很多服务器不正确的实施了该

阿宝 1149

极空间NAS零基础部署Wiki.js:Docker+PostgreSQL全流程避坑指南

本文提供了一份在极空间NAS上从零部署Wiki.js私有知识库的详细指南。通过Docker容器化技术,结合PostgreSQL数据库,手把手讲解环境准备、核心组件配置、性能优化及安全加固等全流程,并特别针对极空间平台特性提供了避坑要点,帮助用户打造安全、高效、自主可控的知识管理系统。

3a9bq4r8t2y的博客 486

单细胞分析避坑指南:你的Harmony批次矫正真的做对了吗?

本文深入探讨了单细胞转录组分析中Harmony批次矫正的正确使用方法,解析了其工作原理及常见误区。通过详细参数调优指南和实战案例,帮助研究者避免过度矫正,确保生物学信号的有效保留。特别关注Harmony在单细胞数据分析中的关键参数设置和结果验证方法。

weixin_31099291的博客 299

Cookie 的规范介绍

目前有以下几种 Cookie 规范: Netscape cookie 草案:是最早的 cookie 规范,基于 rfc2109。尽管这个规范与 rc2109 有较大的差别,但是很多服务器都与之兼容。 rfc2109, 是 w3c 发布的第一个官方 cookie 规范。理论上讲,所有的服务器在处理 cookie( 版本 1) 时,都要遵循此规范。遗憾的是,这个规范太严格了,以致很多服务器不正...

weixin_34319374的博客 185

论文精读——A Comprehensive Survey of Continual Learning: Theory, Method and Application

为了应对现实世界的动态性,智能系统需要在其整个生命周期中逐步获取、更新、积累并利用知识。这种能力被称为Continue Learning(持续学习)。从广义上讲,持续学习明显受到catastrophic forgetting(灾难性遗忘)的限制,即学习新任务通常会导致旧任务的性能急剧下降。Continue Learning的核心目的有二,其一为(稳定性与可塑性间的权衡),其二为(足够的任务内/任务间泛化能力)。

xsddys的博客 1241

Servlet规范系列 之 Cookie源码分析

欢迎大家关注本博,同时欢迎大家评论交流,可以给个赞哦!!!   谈到Cookie,就得说到会话跟踪技术,在Web发展早期,Cookie是会话跟踪技术的不二选择,拥有统一的实现标准。在基于无状态的HTTP协议进行服务搭建时,如何保持更加安全、简便的保持会话,就成了首要问题,Cookie技术就应运而生了。   Cookie是由一个键和一个值构成的,由服务器创建,随着服务器响应发送给客户端浏览器。客户端浏览器会把Cookie保存下来,下一次访问服务器时把服务器发送的Cookie再发送给服务器。单独来说Cook.

键盘上流淌的日子 3983

5分钟搞懂Paris公式:如何用裂纹扩展速率预测零件寿命(附Python代码示例)

本文详细介绍了Paris公式在裂纹扩展速率预测零件寿命中的应用,通过Python代码示例展示了从理论到实践的完整流程。文章涵盖了Paris公式的工程本质、寿命预测计算流程、几何修正因子选择以及实际案例演示,帮助工程师快速掌握这一关键技术。

weixin_29309475的博客 427

AI大模型应用性能核心指标:TTFT 与 TPOT 详解

这两个指标专门衡量大模型流式响应性能,是评估用户体验的关键指标。· 是什么:从请求到第一个输出的等待时间· 为什么重要:决定用户的第一印象和响应感知· 优化方向:模型加载、预处理、冷启动优化· 行业标准:最好<500ms,可接受<1.5s· 是什么:每个输出token的平均生成时间· 为什么重要:决定流式输出的流畅度和总完成时间· 优化方向:推理引擎、内存带宽、批处理优化· 行业标准:最好<50ms/token,可接受<100ms/token在Dify/大模型应用中的意义。

lovehu6686的博客 3961

Cookie规范介绍[ZZ]

Cookie的规范介绍 目前有以下几种Cookie规范: Netscape cookie草案:是最早的cookie规范,基于rfc2109。尽管这个规范与rc2109有较大的差别,但是很多服务器都与之兼容。 rfc2109, 是w3c发布的第一个官方cookie规范。理论上讲,所有的服务器在处理cookie(版本1)时,都要遵循此规范。遗憾的是,这个规范太严格了,以致很多服务器不正确的实...

iteye_7729的博客 146

USB设备识别码VID和PID详解:如何查询和自定义你的设备ID

本文详细解析了USB设备识别码VID和PID的核心作用、查询方法及自定义配置技巧。VID(供应商识别码)和PID(产品识别码)是USB设备的唯一身份证,用于驱动匹配和功能识别。文章提供了Windows和Linux系统下的查询方法,并探讨了如何合法获取和自定义VID/PID,适合硬件开发者和DIY爱好者参考。

weixin_29168675的博客 1455

HTTP Cookie规范

所有数据在网络上传输,最终都可以理解为字符串的传输。不要跟我扯到二进制,还原主义并没有将问题简单化,特别是在计算机世界里,使用还原主义,一切都还原成二进制流,这根本没有意义。 这里我们先还原到文件这个程度,所有文件都是有格式的,比如视频的avi格式,图片的jpg格式,文档的doc格式,表格的xls格式。何为格式,就是表示文件的规范,格式规定了文件的文件头,文件体,文件尾等,让文件的生成和读取可以程序化,可以在网络上传输。 这里HTTP协议也是一样的道理,HTTP是超文本传输协议,可以传输各种文件,所以发

诗人不写诗 1025

在实战中学AI-车流量统计项目-YOLOV11车辆检测-YOLOV11模型的部署

考虑实际落地中部署推理资源消耗,速度与模型精度之间的均衡,同时,车辆属于比较通用场景的目标检测,我们将YOLOV11作为最终的模型选择,目前官方开源的模型基于coco数据集训练,里面已经包含了车辆相关类别,经测试,在监控视角下效果基本可用,所以,在落地过程中,我们先用这个模型来打通部署链路,后面再逐步优化模型性能。在Nvidia的硬件下做部署,部署框架优先选择官方框架TensorRT,下面重点讲述如何用TensorRT部署YOLOV11模型。

Aleo_优快云的博客 2166

人体红外传感器HC-SR501

本文记录的是如何用stm32使用HC-SR501。实验平台:野火指南者stm32f103vet6。实验现象:一旦有人体经过,LED会亮红色。HC-SR501 传感器工作原理人体都有恒定的体温,一般在 37 度,所以会发出特定波长 10UM 左右的红外线,被动式红外探头就是靠探测人体发射的 10um 左右的红外,进行工作的。人体发射的 10um 左右。

weixin_43772611的博客 1万+

Java Cookie常用方法介绍

什么是Cookie? Cookie翻译成中文是小甜点,小饼干的意思。 Cookie是以键值对形式存储在客户端主机硬盘中,由服务器端发送给客户端,客户端再下一次访问服务器端时,服务器端可以获取到客户端Cookie缓存文件。 Cookie是由服务器端创建的,然后由服务器端发送给客户端,客户端以键值对形式存储Cookie,并标注Cookie的来源。客户端再次访问服务器端时,存储的Cookie会保存在请求...

wunianisme的博客 857

ET2012新版免狗免安装绿色软件

ET2012新版免狗免安祖昂绿色软件。,新界面,新视觉,

cookie的规范Cookie的不可跨域名性或Cookie与域名的关系

前些天在开发中遇到了关于浏览器cookie的一些小细节问题。 例如: 我创建的一个小购物车的web项目。 用nginx绑定域名 cart.test.com,对应ip为localhost:8888。 具体问题: 使用地址栏访问:cart.test.com/cart/addItemToCartList?itemId=123 (此为添加购物车数据方法)时,返回的结果为成功,存储过程没有问题。 但是,我使用localhost:8888/cart/findCartList(此为查询购物车数据方法)获取的数据却是空

newbei5862的博客 2747

efm32 入门.pdf

本PDF共计22页,介绍的是操作驱动API,下载与否自己斟酌。

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

Cookie和Session的详细介绍和使用规范

Cookie和Session的详细介绍和使用规范 Cookie的由来(浏览器端的会话技术——保存数据技术) Cookie的需求分析 场景: 现象:进入淘宝的登陆页面,显示了我上次登录的用户名 显示上次登录用户名这个功能,如何实现? 1 上一次登录的时候,肯定将用户名记录下来 2 肯定是在服务器处理登录的时候,将用户名记录下来 3 那么这个数据到底存在哪里...

苏凯的博客 1680

OV9734 DATASHEET,完整规格书

OV9734完整规格书,包括电气参数,尺寸规格,寄存器配置表等

Cookie 规范

INTRODUCTION Cookies are a general mechanism which server side connections (such asCGI scripts) can use to both store and retrieve information on theclient side of the connection. The addit

无花的专栏 839

Cookie

Cookie翻译成中文是小甜点,小饼干的意思。在HTTP中它表示服务器送给客户端浏览器的小甜点。其实Cookie就是一个键和一个值构成的,随着服务器端的响应发送给客户端浏览器。然后客户端浏览器会把Cookie保存起来,当下一次再访问服务器时把Cookie再发送给服务器。Cookie是由服务器创建,然后通过响应发送给客户端的一个键值对。客户端会保存Cookie,并会标注出Cookie的来源(哪个服务器的Cookie)。

m0_62329056的博客 955
上一篇: tomcat中使用gzip对html,xml,js,plain进行压缩
下一篇: 错误:用脚本window.showModalDialog打开的页面,点击button时打开新窗口
wangguoping
博客等级 码龄19年 1粉丝 32原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值