HTTP1.1(十二)Cookie的格式与约束

news/2024/5/18 16:39:43 标签: Cookie, Set-Cookies, HTTP

一  Cookie的格式与约束

①   Cookies是什么

1) cookie是我们在'前端编程中'经常使用的概念

2) 使用cookie'利用浏览器'帮助我们'保存客户的相关状态信息',保存用户已经'做了什么'事情

3) '重点'和'难点'

  [1]、cookie的工作'原理'

  [2]、cookie的'限制'是什么

  [3]、session又是怎样与cookie'关联'起来

浏览器'维护'Cookie理解:

  1)判断每次请求'是否携带'对应的'cookie'

  2) Cookie过期进行'删除'

chrome浏览器如何查看、修改、删除Cookie 

HTTP Cookie   wiki关于Cookie的解读  

②  Cookie请求头

++++++++++  "Cookie语法格式"  ++++++++++

③  Set-Cookie响应头

++++++++++ "Set-Cookie语法" ++++++++++

   

+++++++++++ "key=value细节和限制" +++++++++++ 

浏览器存储方案 Cookie、LocalStorage、SessionStorage

二   Set-Cookie响应头的可选属性

说明: 'Set-Cookies'中的'attriute属性'是'optional'可选的

作用: 给'cookie'设置'属性',浏览器检查请求是否满足'相关属性',满足才会携带'对应'的cookie

expires

1) expires属性用于指定'Cookie过期时间',它采用'UTC或GMT'格式,是一个'绝对时间'

 备注: 可以通过new date().toUTCString()或new Date().toGMTString()获取到

 补充: expires-av '明确'的指定一个日期,超过这个'时间点'的cookie,会作废,被浏览器自动删除

2) 如果'不设置'该属性,或者'设为null',Cookie只在'当前会话(session)'有效,关注'默认'行为

 备注: 浏览器窗口'一旦关闭',当前session结束,该Cookie就会'被删除'

 补充: 同一个浏览器新开一个'tab',发送请求会自动带上相关'Cookie'

3) 浏览器根据'客户端'时间,决定Cookie'是否过期'

 备注: 由于本地时间是'不精确(时钟不同步)'的,所以无法保证Cookie一定会在服务器指定的时间过期

4) expires'同'Expires,'不区分'大小写

max-age

++++++++++++++ 'max-age-av' ++++++++++++++

1) 以一个'定时器的方式'告诉浏览器'经过多少秒(正整数)'之后过期,

备注:max-age和expires选项'同时'存在,以'max-age'为主,其'优先级'最高

补充:如果设置"0"或负值,这样在关闭浏览器时,就马上清除Cookie,不会记录用户信息,更加'安全'

2) max-age'同'Max-Age,'不区分'大小写

3) 最佳实践,如果必须设置'Cookie的过期时间',建议使用'max-age'属性

4) expires和max-age的'优先级',后者更'高'

domain

  

domain-av -->指定cookie可以'被'哪些域名使用,也即将'该服务端产生的Cookie'存储到哪些域名下

domain就是域,cookie不能'跨根域'设置,只能设置'当前域'或者'父域'中

'默认'行为: 

 1) 如果'不显示设置'cookie,那么'浏览器'会生成一个'只针对当前域名[精确]'的cookie

 2) 域名相同,但是'解析记录不相同'呢? --> 是否能'伪造'域名解析的记录,获取'Cookie'

 3) 遗留: 如果'原始请求'是'ip'呢?

个人补充理解: nginx的Cookie不'允许'跨站-->"ip",比'跨域'更松弛 --> "待验证"

+++++++++++ "注意事项" +++++++++++

1)domain参数可以设置'父'域名以及'自身',但不能设置'其它域名',包括子域名,否则cookie不起作用

  [1]、'如何生成一个'当前域名'无法使用的'Cookie --> 'Cookie失效'

  [2]、domain设置'其子域名'或'其他'域名时,所有域名都'接收不到'cookie了,无意义

2)cookie的'作用域':domain本身以及domain下的'所有'子域名

 关于cookie domain中的点.前缀   cookie中的domain属性

疑问:设置 Cookie 的 domain 时,前面'带点'和'不带点'的区别?

1) 带点:'父'域名和'任何子'域名都可以访问

2) 不带点:只有'完全一样'的域名才可以访问

备注: 不同浏览器行为'不一样',核心关注'chrome'

chrome和firefox对于.的处理

Cookie的domain属性发现的

http cookie的domain使用  

正确使用cookie中的domain

++++++++ '单点登录效果' ++++++++

1) 通过在'父级域名'下设置 cookie

2) 那么在'多个子域名下'就可以拿到'父域名下的 cookie',从而'不用'重新登录

3) 效果: 在一个站点如a.wzj.com登录后切换到另一个站点b.wzj.com时也自动被判断为'已经登录'

++++++++++++ "场景解读" ++++++++++++

1) son.wzj.com通过设置'domain .wzj.com'生成一个所有'wzj.com'子域名都可以使用的Cookie

设置cookie时的domain与path配置

④  path

path-av:哪些请求uri'可以使用'这些cookie,可以限制部分'url'请求携带该'cookie'

set-cookie 的时候不设置 path 属性,默认path值 

根据 HTTP 标准 RFC6265,'没有'指定 set-cookie 的 path 属性时,默认为'请求 uri' 的路径

例如:请求 http://www.wzj.com/route?name=wzj ,那么 path 默认是 "/route"

⑤  secure

特点: 限制只有'https'请求才会携带相应的'Cookie'

⑥  httponly  了解

备注: 不要'误解'为只能使用'http'访问

⑦ samesite

1) 根据'宽松程度降序'排列: None'最宽松'、Lax'默认'、Strict'最严格'

2) 前提是'浏览器'支持'Same-Site';浏览器也可以通过选项关闭'SameSite'

阮一峰 Cookie 的 SameSite 属性 深入理解 Cookie 的 SameSite 属性  跨域和跨站 第三方域名

+++++++++++++++ '(1) Lax 默认行为' +++++++++++++++

备注: 了解'特殊'场景

+++++++++++++++ '(2) Strict ' +++++++++++++++

备注: 理解'场景'

+++++++++++++++ '(3) None' +++++++++++++++

强调: 'SameSIte None'必须和'Secure'结合使用,才能生效

 预测最近面试会考 Cookie 的 SameSite 属性

⑧  小结

 ⑨  疑惑解答

 蛋哥的讲解

⑩  Cookie使用的限制

⑪  Cookie在设计上的问题

三   案例分享

未完待续:①②③④⑤⑥⑦⑧⑨⑩

http://www.niftyadmin.cn/n/259981.html

相关文章

制造型企业为何需要MES管理系统,企业怎样选择合适的MES

MES管理系统是专门针对制造型企业而设计的,能实现对生产车间、工厂信息化管理,帮助制造型企业提高生产效率,加快数字化转型。目前针对制造型企业生产效率、企业竞争力和生产管理状况的需求,MES管理系统已经成为实现生产经营目标的…

MC9S12G128开发板—实现按键发送CAN报文指示小车移动功能

实验环境:MC9S12G128开发板 基本功能:控制开发板上的按键,模拟车辆移动的上下左右四个方位,通过can通信告诉上位机界面,车辆轨迹的移动方位。 1. 1939报文发送的示例代码 MC9S12G128开发板1939协议发送can报文数据的…

【多线程】线程安全问题

1. 一段线程不安全的代码 我们先来看一段代码&#xff1a; public class ThreadDemo {public static int count 0;public static void main(String[] args) {for (int i 0; i < 10_0000; i) {count;}System.out.println("count " count);} } // 打印结果&…

无线测温系统在煤矿高压电气设备上的应用

摘要&#xff1a;随着社会经济的不断发展&#xff0c;电力系统向着高电压、高容量的方向前进着&#xff0c;电力系统全新的技术与设备层出不穷&#xff0c;电力的输送能力不断提升。然而&#xff0c;高压电气设备承载的高压电力负荷也让其自身的温升问题成为了威胁电网稳定的元…

LSSANet:一种用于肺结节检测的长、短切片感知网络

文章目录 LSSANet: A Long Short Slice-Aware Network for Pulmonary Nodule Detection摘要方法Long Short Slice GroupingLong Short Slice-Aware Network 实验结果 LSSANet: A Long Short Slice-Aware Network for Pulmonary Nodule Detection 摘要 提出了一个长短片感知网…

低代码平台-宜搭的核心概念

宜搭的核心概念 文章目录 全局变量基本的变量使用查看输出内容以及调试方式事件绑定页面生命周期条件渲染循环渲染自定义样式表单校验 全局变量 在左侧数据源中添加变量&#xff0c;添加变量的写法和js的写法一致。 基本的变量使用 给文本绑定数据源&#xff0c;点击左侧刚才定…

CentOS系统安装Intel E810 25G网卡驱动

因特尔网卡驱动给的都是二进制包&#xff0c;需要编译环境。 首先去Intel下载最新的驱动 E810驱动下载&#xff1a;https://www.intel.com/content/www/us/en/download/19630/intel-network-adapter-driver-for-e810-series-devices-under-linux.html?wapkwe810 里面有三个驱…

Unity Camera -- (2)相机投影设置

在Editor中调整相机 和场景视图中的其他游戏物体一样&#xff0c;相机本身也可以通过使用移动和旋转工具来进行调整。但这种方式比较难用&#xff0c;调整起来又慢又不精确。我们可以使用Move To View功能来快速调整相机所拍摄的画面。 1. 打开Camera_Projection_Scene&#xf…