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

news2024/11/15 17:32:54

一  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.coloradmin.cn/o/459050.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【Android Framework (七) 】- ActivityManagerService(AMS)

文章目录 知识回顾启动第一个流程initZygote的流程system_serverServiceManagerBinderLauncher的启动 前言源码分析1.AMS的启动. ActivityManagerService.java2.setSystemProcess3.应用进程的初始化4.Activity的启动流程 拓展知识1.介绍一下Activity的启动流程。2.ActivityMana…

Handbook of MusicPsychology 音乐心理学手册 ( 多纳德·霍杰斯 Donald.A.Hodges) 笔记

由两个以上的音组成的结合音,除了该声波的波形,人耳会另外脑补出不存在的波形 频率相距较远的一些音与频率相距较近的一些音,前者累加的响度比后者要大 除了泛音部分,音的起声部分也是音色辨别的关键 音高、响度、音色、时值&a…

托福高频真词List07 // 附托福TPO阅读真题

目录 ​ 4月24日单词 生词 熟词 4月25日真题 4月24日单词 生词 🍡live in strictly aquatic habitat / əˈkwɑːtɪk / 🍡only live in aquatic environment 只生活在水生环境中 readilyquickly readilyeasily adv 迅速地 adv 轻易地 wide…

聚观早报|中国将是ChatGPT主要对手;​iPhone 15将使用USB-C接口

今日要闻:中国将是ChatGPT主要对手;iPhone 15将使用USB-C接口;31名ChatGPT训练派遣工遭解雇;大疆Mavic 3 Pro无人机高清图曝光;中国红牛回应被禁止生产销售 中国将是ChatGPT主要对手 微软总裁布拉德史密斯接受采访时表…

前端开发之vue动态路由实现方案

前端开发之vue动态路由实现方案 前言2. 实现1、登录页面创建登录函数和watch监听路由2、调用的login方法(1)登录方法(2)存储token 3、router.push的时候调用路由守卫(1)创建路由守卫,建议路由守…

MySQL Community Server 8.0.33安装教程【笔记】

仅安装MySQL Community Server 下载网址:https://dev.mysql.com/downloads/installer/ 1、下载对应版本; 2、下载后,双击安装,弹出界面选择【Custom】; 3、弹出界面选择【MySQL Server 8.0.33 - X64】; 3、弹出界面…

【C++ Metaprogramming】0. 在C++中实现类似C#的泛型类

两年前,笔者因为项目原因刚开始接触C,当时就在想,如果C有类似C#中的泛型限定就好了,能让代码简单许多。我也一度认为: 虽然C有模板类,但是却没办法实现C#中泛型特有的 where 关键词: public c…

Android 13 wificond讲解

wificond介绍 看如下图,可以知道wificond 进程,该进程位于 system/connectivity/wificond 中。wificond 进程通过标准的 nl80211 命令与 Wi-Fi 驱动程序进行通信。 查看手机也能看到wificond 进程 wificond启动 1. 开机的时候通过调用wificond.rc文件启动wificond system…

docker 部署LNMP

准备工作。 #首先获取nginx配置文件 [rootlocalhost ~]# docker pull nginx:1.23.3 [rootlocalhost ~]# docker run --name nginx --restartalways -d -p 80:80 nginx:1.23.3 [rootlocalhost ~]# mkdir -p /usr/local/nginx/{conf,log,html,conf.d} #复制配置文件 [rootlocalh…

易观千帆 | 2023年3月证券APP月活跃用户规模盘点

易观:2023年3月证券服务应用活跃人数14131.58万人,相较上月,环比增长0.61%,同比增长0.60%;2023年3月自营类证券服务应用Top10 活跃人数6221.44万人,环比增长0.08%;2023年3月第三方证券服务应用T…

使用Spring的五大类注解读取和存储Bean

目录 1.存储Bean对象的注解 1.1 五大类注解 1.2 方法注解 1.3添加注解的依赖 2.注解的使用 2.1 controller注解 2. 2Service注解 2.3.Resopsitory注解 2.4Component注解 2.5Configuration注解 2.6 注解之间的关系 3.方法注解 3.1 方法注解要配合类注解来使用。 3.2…

【Python】ddddoc进行OCR识别和目标检测 ——识别验证码和滑块(安装部署+测试代码注释详细)

目录 安装部署gitee已经上传完整项目requiremen.txt插件作者更新地址 项目结构第一部分 OCR识别部分第二部分 目标检测部分总结 欢迎关注 『Python』 系列,持续更新中 欢迎关注 『Python』 系列,持续更新中 安装部署 gitee已经上传完整项目 requiremen.…

图片对象列表查询与展示(vue+springboot+elementUI)

本文描述场景为 展示:后端从数据库中查询图片对象列表,返回前端展示 多图片展示 先看一下后端表实体 import com.zpmc.common.domain.BaseEntity; import io.swagger.annotations.ApiModel; import lombok.*;import javax.persistence.*; import java.…

8086汇编之乘法指令MUL

2023年4月22日,周六晚上。 今天写汇编作业的时候,碰到了MUL指令,于是把学习到的MUL指令知识记录下来,也可以通过写这篇博客彻底理清MUL指令。 当被乘数和乘数都是8位时: 怎么判断被乘数和乘数是不是8位的&#xff1f…

操作系统之认识进程

目录 什么是进程 进程的状态和转换 进程控制 进程通信 什么是进程 在电脑的任务管理器中,能看到电脑当前运行着的所有进程 那到底什么是进程呢?和我们所看所写的那些程序有什么区别? 操作系统是如何区分这些进程的呢? 那就需要…

银河麒麟(桌面版和服务器版)之远程桌面安装

一、前言 在信创方案中经常介绍支持麒麟系统,实际上麒麟分为银河麒麟和中标麒麟,银河麒麟又分为服务器版和桌面版,服务器器版一般用于应用系统部署,桌面版一般用于日常办公。银河麒麟操作系统作为国产操作系统,是目前国…

java定时任务schedule

在 Java中,可以使用定时任务(schedule)来实现定时任务。这种定时任务能够根据用户的需求进行时间的控制,让用户可以自由设定每一个任务的开始时间和结束时间。 下面来介绍如何使用 java中的定时任务来实现定时任务。 首先需要在配…

# 将pg日志导入pg数据库的几种方法

将pg日志导入pg数据库的几种方法 文章目录 将pg日志导入pg数据库的几种方法1 方法1:官方方法(fiel_fdw)1.1 创建file_fdw数据源(在此之前需要安装pg的file_fdw扩展)1.2 创建外部表并导入数据 2 方法2:用csv…

会议论文与期刊论文的写作差异

AI领域的会议论文和期刊论文在撰写方法上存在一定的差异,读者需要理解这些差异,才能做到有的放矢,提高论文的命中率。如果按照会议论文的风格来写期刊论文,或者按照期刊论文的风格来写会议论文,论文命中的概率将大大降…

服务(第十三篇)lvs(负载均衡器)+nginx(反向代理)+tomcat(后端服务器)+nfs共享

准备6台机器: 192.168.169.10 lvs负载均衡器 192.168.169.20、192.168.169.30 nginx反向代理 192.168.169.40(tomcat多实例)192.168.169.50(tomcat) 19.168.169.60(nfs共享) 实验没啥好说的…