cookie & session
Cookie
simple introduction
由于http是无状态的,因此服务器和客户端建立起`个性的`连接是不可以的,所以使用cookie机制。来标识唯一的用户,这样服务器就可以有选择的给客户端response内容
cookie存在客户端的内存中或者特定的文件中,这由服务器设定,内容就是一段文本。
cookie的有效期:maxAge,当此值为正数时,cookie将持久存在client特定的文件中,直到超过maxAge的时间cookie才会失效。如果maxAge为负数,则表示该Cookie仅在本浏览器窗口以及本窗口打开的子窗口内有效,关闭窗口后该Cookie即失效。
cookie建立和使用过程:
step1:client请求
step2: 当服务器返回给客户端一个http响应信息时,其中如果包含Set-Cookie这个头部时,意思就是指示客户端建立一个cookie。
step3: 在后续的http请求中自动发送这个cookie到服务器端,直到这个cookie过期。
step4: 请求回应
除了cookie,客户端可以将需要发送的数据包含在请求的url中,包括常见的GET、POST
cookie安全性:
为了保证各自网站指定操作自己的cookie,所以cookie是不可跨域名的,也就是说baidu.com的cookie在访问www.baidu.com只能携带baidu.com的cookie。另外http协议在传输信息的时候是明文的,所以如果在明文下传递存在cookie中的敏感信息是和不安全的,此时可以设定Cookie的secure属性为true,必须使用https传输信息,当然包括cookie
Session
simple introduction
由于HTTP协议是无状态的协议,所以服务端需要记录用户的状态时,就需要用某种机制来识具体的用户,这个机制就是Session.典型的场景比如购物车
session在建立在服务端的用户的状态信息,但传送个客户端的是一个session id(一段字符串),客户端随后的请求时将携带这个session id,服务端就可以通过这个session id查到的用户状态信息。Session的使用比Cookie方便,但是过多的Session存储在服务器内存中,会对服务器造成压力。当有大量的请求时,为防止内存溢出,服务器会把长时间内没有活跃的Session从内存删除。这个时间就是Session的超时时间。如果超过了超时时间没访问过服务器,Session就自动失效了。
session需要cookie:有因为HTTP是无状态的,所以session不知道请求是不是来自同一客户端,此时服务端会想客户端浏览器发送一个Cookie,它的值就是session id,服务器通过这个cookie来识别是否时同一用户。由于这个cookie的maxAge为-1,存在内存中,所以一般浏览器关闭session id就会丢失。
如果Cookie别禁了:一般利用URL地址重写,将session id写在URL中传递给服务器,另外还有表单隐藏技术。
Cookie与Session的区别
cookie存储在客户端本地,session存储在服务器上
session比cookie安全些
session一般用来跟踪回话,cookie一般保存用户喜好或者保存用户名密码
session可存放在内存、文件、数据库、甚至一个集群中。#django默认是存在数据库中
Cookie有大小限制,一般最大3K
session对cookie有依附关系,session id会存在cookie中(cookie enable),然后写在http头部传给服务端。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· AI与.NET技术实操系列:基于图像分类模型对图像进行分类
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 25岁的心里话
· 闲置电脑爆改个人服务器(超详细) #公网映射 #Vmware虚拟网络编辑器
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· 零经验选手,Compose 一天开发一款小游戏!
· 一起来玩mcp_server_sqlite,让AI帮你做增删改查!!