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

news/2024/4/23 20:05:52/文章来源:https://blog.csdn.net/wzj_110/article/details/130254962

一  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,那么'浏览器'会生成一个'只针对当前域名[精确]'的cookie2) 域名相同,但是'解析记录不相同'呢? --> 是否能'伪造'域名解析的记录,获取'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) 通过在'父级域名'下设置 cookie2) 那么在'多个子域名下'就可以拿到'父域名下的 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.luyixian.cn/news_show_103240.aspx

如若内容造成侵权/违法违规/事实不符,请联系dt猫网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

90年三本程序员,8年5跳,年薪4万变92万……

很多时候,虽然跳槽可能带来降薪的结果,但依然有很多人认为跳槽可以涨薪。近日,看到一则帖子。 发帖的楼主表示,自己8年5跳,年薪4万到92万,现在环沪上海各一套房,再干5年码农,就可以…

【Vue】学习笔记-初始化脚手架

初始化脚手架 初始化脚手架说明具体步骤脚手架文件结构 初始化脚手架 说明 Vue脚手架是vue官方提供的标准化开发工具(开发平台)最新版本是4.x文档Vue CLI 具体步骤 如果下载缓慢请配置npm淘宝镜像 npm config set registry http://registry.npm.taoba…

【移动端网页布局】流式布局案例 ② ( 实现顶部固定定位提示栏 | 布局元素百分比设置 | 列表样式设置 | 默认样式设置 )

文章目录 一、样式测量及核心要点1、样式测量2、高度设定3、列表项设置4、设置每个元素的百分比宽度5、设置图像宽度 二、核心代码编写1、HTML 标签结构2、CSS 样式3、展示效果 三、完整代码示例1、HTML 标签结构2、CSS 样式3、展示效果 一、样式测量及核心要点 1、样式测量 京…

【ChatGPT】如何让 ChatGPT 不再频繁报错,获取更加稳定的体验?

文章目录 一、问题描述二、方案1:使用 OpenAI API Key 来访问 ChatGPT三、方案2:安装 Chrome 插件3.1 介绍3.2 安装步骤3.2.1 插件 & 脚本安装3.2.2 解读功能 一、问题描述 最近一段时间,相信大家都发现了 ChatGPT 一个问题,…

Unity音量滑块沿弧形移动

一、音量滑块的移动 1、滑块在滑动的时候,其运动轨迹沿着大圆的弧边展开 2、滑块不能无限滑动,而是两端各有一个挡块,移动到挡块位置,则不能往下移动,但可以折回 3、鼠标悬停滑块时,给出音量值和操作提示 …

前端 百度地图绘制路线加上图片

使用百度官方示例的方法根据起终点经纬度查询驾车路线但是只是一个线路 <template><div class"transportInfo"><div id"mapcontainer" class"map">11</div><div class"collapse"><el-collapse v-mo…

克隆Linux系统(centos)

克隆前得保证你有一台Linux系统的虚拟机了。 如果没有&#xff0c;可以参考这篇文章&#xff1a; 安装VMware虚拟机、Linux系统&#xff08;CentOS7&#xff09;_何苏三月的博客-CSDN博客 按照示意图一步一步执行即可。 克隆前先关闭运行的虚拟机系统。 然后右键已安装的虚拟…

【图像抠图】【深度学习】Ubuntu18.04下GFM官方代码Pytorch实现

【图像抠图】【深度学习】Ubuntu18.04下GFM官方代码Pytorch实现 提示:最近开始在【图像抠图】方面进行研究,记录相关知识点,分享学习中遇到的问题已经解决的方法。 文章目录 【图像抠图】【深度学习】Ubuntu18.04下GFM官方代码Pytorch实现前言数据集说明1.AM-2k【自然动物】2.B…

Ubuntu更新软件下载更新与移除

目录 一、更新软件源 二、下载与安装软件 三、如何移除软件 四、Ubuntu商店下载软件 一、更新软件源 更新Ubuntu软件源的操作步骤&#xff0c;更新软件源的目的就是&#xff0c;将在Ubuntu官网的软件源更改到本地&#xff0c;也就是国内的软件源&#xff0c;这样的话下载安…

HTML+CSS+JS 学习笔记(三)———Javascript(下)

&#x1f331;博客主页&#xff1a;大寄一场. &#x1f331;系列专栏&#xff1a;前端 &#x1f331;往期回顾&#xff1a;HTMLCSSJS 学习笔记&#xff08;三&#xff09;———Javascript(上) &#x1f618;博客制作不易欢迎各位&#x1f44d;点赞⭐收藏➕关注 目录 JavaScrip…

ES6 新特性的let--const 解构赋值--模板字符串--对象相关新特性--箭头函数--综合代码示例

目录 ES6 新特性 ES6 基本介绍 ES6 是什么? let 声明变量 演示 let 的基本使用 注意事项和使用细节 代码演示 : const 声明常量/只读变量 应用实例 注意事项和使用细节 解构赋值 基本介绍 应用实例-数组解构 应用实例-对象解构 模板字符串 基本介绍 应用实例…

一文带你学会如何写一份糟糕透顶的简历

我们每个人几乎都会面对找工作这件事&#xff0c;而找工作或者说求职首先就是要写一份简历。今天狗哥将以一个不同的视角带你写一份无与伦比&#xff0c;糟糕透顶的求职简历&#xff0c;说实话&#xff0c;其实几年前&#xff0c;我就是这么写的。 目录 1. 文件名 2. 基本信…

OpenAI ChatGPT 能取代多少程序员的工作?导致失业吗?

阅读原文&#xff1a;https://bysocket.com/openai-chatgpt-vs-developer/ ChatGPT 能取代多少程序员的工作&#xff1f;导致我们程序员失业吗&#xff1f;这是一个很好的话题&#xff0c;我这里分享下&#xff1a; 一、ChatGPT 是什么&#xff1f;有什么作用 ChatGPT是一种…

关于 OpenShift(OKD) 网络 Service、Routes的一些笔记

写在前面 参加考试&#xff0c;分享一些学习 OpenShift 的笔记博文内容为 OpenShift 网络相关组件 Service、Routes 很浅的一些认识学习环境为 openshift v3 的版本&#xff0c;有些旧这里如果专门学习 openshift &#xff0c;建议学习 v4 版本理解不足小伙伴帮忙指正 傍晚时分…

开源 AI 辅助编程工具 AutoDev 现已上架 Jetbrains 插件市场

我们非常高兴地宣布 AutoDev v0.2.0 的发布&#xff01;AutoDev 是一款强大的 AI 辅助编程工具&#xff0c;可以与 Jetbrains 系列 IDE 无缝集成&#xff08;VS Code 支持正在开发中&#xff09;。通过与需求管理系统&#xff08;如 Github Issue 等&#xff09;直接对接&#…

Vue收集表单数据学习笔记

收集表单数据 v-model双向数据绑定&#xff0c;收集的是input框的value&#xff0c;单选按钮不存在value&#xff0c;就像代码中的男女选项&#xff0c;即使绑定性别v-model“sex”&#xff0c;控制台依然不能接收性别的值&#xff0c;因为没有value值&#xff0c;&#xff0c…

欧几里得算法、扩展欧几里得算法(特解、应用、通解)

文章目录 1. 欧几里得算法&#xff08;也叫辗转相除法&#xff09;1.1 直接上模拟1.2 几何理解1.3 用代数方法证明 g c d ( a , b ) g c d ( b , a % b ) gcd(a, b) gcd(b, a \% b) gcd(a,b)gcd(b,a%b)1.3.1 左推右&#xff1a; g c d ( a , b ) g c d ( b , a % b ) gcd(a…

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

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

LINUX的系统管理与维护命令

文章目录 一、LINUX的系统管理与维护命令总结 一、LINUX的系统管理与维护命令 - Linux ls命令:显示指定工作目录下的内容 Linux pwd命令:显示当前工作目录 Linux cd命令:切换工作目录 Linux date命令:显示或设置系统时间 Linux su命令:切换用户 Linux clear命令:清除屏幕 Li…

Java编程设计语言-集合类

API(application programming interface)是JDK的重要组成部分&#xff0c;API提供了Java程序与运行它的系统软件&#xff08;Java虚拟机&#xff09;之间的接口&#xff0c;可以帮助开发者方便、快捷地开发Java程序 集合在程序设计中是一种重要的是数据结构&#xff0c;Java中提…