session和cookie的区别(代码片段)

武培轩 武培轩     2022-10-31     700

关键词:

会话跟踪是Web程序中常用的技术,用来跟踪用户的整个会话。常用的会话跟踪技术是Cookie与Session。Cookie通过在客户端记录信息确定用户身份,Session通过在服务器端记录信息确定用户身份。

本文将讲解Cookie和Session以及它们的区别。

HTTP 协议是无状态的,主要是为了让 HTTP 协议尽可能简单,使得它能够处理大量事务。HTTP/1.1 引入 Cookie 来保存状态信息。

Cookie 是服务器发送给客户端的数据,该数据会被保存在浏览器中,并且客户端的下一次请求报文会包含该数据。通过 Cookie 可以让服务器知道两个请求是否来自于同一个客户端,从而实现保持登录状态等功能。

创建过程

服务器发送的响应报文包含 Set-Cookie 字段,客户端得到响应报文后把 Cookie 内容保存到浏览器中。

HTTP/1.1 200 OK
Server: nginx/1.10.3 (Ubuntu)
Date: Wed, 04 Apr 2018 07:52:53 GMT
Content-Type: text/html; charset=utf-8
Transfer-Encoding: chunked
Connection: keep-alive
Vary: Accept-Encoding
Vary: Cookie
X-Frame-Options: SAMEORIGIN
Set-Cookie: csrftoken=Unoyq4GhHrctiYdxp02xjl4exWS5JYmTzYm2UHJUwjeR0UFMIyv4CxUFicFDcGyu; expires=Wed, 03-Apr-2019 07:52:53 GMT; Max-Age=31449600; Path=/; secure
Strict-Transport-Security: max-age=315360000; includeSubDomains
Content-Encoding: gzip

客户端之后发送请求时,会从浏览器中读出 Cookie 值,在请求报文中包含 Cookie 字段。

GET / HTTP/1.1
Host: leetcode-cn.com
Connection: keep-alive
Cache-Control: max-age=0
Upgrade-Insecure-Requests: 1
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/62.0.3202.75 Safari/537.36
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8
Accept-Encoding: gzip, deflate, br
Accept-Language: zh-CN,zh;q=0.9
Cookie: Hm_lvt_fa218a3ff7179639febdb15e372f411c=1522568819,1522574611,1522657411,1522828353; Hm_lpvt_fa218a3ff7179639febdb15e372f411c=1522828370; csrftoken=Unoyq4GhHrctiYdxp02xjl4exWS5JYmTzYm2UHJUwjeR0UFMIyv4CxUFicFDcGyu

分类

  • 会话期 Cookie:浏览器关闭之后它会被自动删除,也就是说它仅在会话期内有效。
  • 持久性 Cookie:指定一个特定的过期时间(Expires)或有效期(Max-Age)之后就成为了持久性的 Cookie。
Set-Cookie: csrftoken=Unoyq4GhHrctiYdxp02xjl4exWS5JYmTzYm2UHJUwjeR0UFMIyv4CxUFicFDcGyu; expires=Wed, 03-Apr-2019 07:52:53 GMT; Max-Age=31449600; 
属性 说明
NAME=VALUE 赋予 Cookie 的名称和其值(必需项)
expires=DATE Cookie 的有效期(若不明确指定则默认为浏览器关闭前为止)
path=PATH 将服务器上的文件目录作为 Cookie 的适用对象(若不指定则默认为文档所在的文件目录)
domain=域名 作为 Cookie 适用对象的域名(若不指定则默认为创建 Cookie 的服务器的域名)
Secure 仅在 HTTPs 安全通信时才会发送 Cookie
HttpOnly 加以限制,使 Cookie 不能被 JavaScript 脚本访问

Session

Session 是服务器用来跟踪用户的一种手段,使用上比Cookie简单一些,相应的也增加了服务器的存储压力。每个 Session 都有一个唯一标识:Session ID。当服务器创建了一个 Session 时,给客户端发送的响应报文包含了 Set-Cookie 字段,其中有一个名为 sid 的键值对,这个键值对就是 Session ID。客户端收到后就把 Cookie 保存在浏览器中,并且之后发送的请求报文都包含 Session ID。

当Cookie被禁用时,可以跟在url的后面,或者以表单的形式提交到服务器端,从而使服务器端了解客户端的状态。

两者比较

联系:

Cookie与Session都是用来跟踪浏览器用户身份的会话方式。

区别:

  • Cookie数据存放在客户的浏览器上,Session数据放在服务器上。
  • Cookie不是很安全,别人可以分析存放在本地的Cookie并进行Cookie欺骗,如果主要考虑到安全应当使用加密的Cookie或者Session。
  • Session会在一定时间内保存在服务器上。当访问增多,会比较占用你服务器的性能,如果主要考虑到减轻服务器性能方面,应当使用Cookie。
  • 单个Cookie在客户端的限制是4K,很多浏览器都限制一个站点最多保存20个Cookie。

session和cookie的区别(代码片段)

...用来跟踪用户的整个会话。常用的会话跟踪技术是Cookie与Session。Cookie通过在客户端记录信息确定用户身份,Session通过在服务器端记录信息确定用户身份。本文将讲解Cookie和Session以及它们的区别。CookieHTTP协议是无状态的,主要... 查看详情

cookies和session的区别和理解(代码片段)

Cookies和Session的区别和理解cookie机制Cookies是服务器在本地机器上存储的小段文本并随每一个请求发送至同一个服务器。IETFRFC2965HTTPStateManagementMechanism是通用cookie规范。网络服务器用HTTP头向客户端发送cookies,在客户终端,浏览器... 查看详情

cookie和session的区别?(代码片段)

注意cookie有时候禁不掉Cookiesession存储在客户端存储在服务器端两种类型两种实现方式有声明周期依赖于cookie无声明周期url重写父路径不能访问子路径的cookie同一个session的窗口共享一个session典型应用:典型应用:3个月不用再登... 查看详情

面试题思考:cookie和session的区别(代码片段)

面试回答:1、cookie数据存放在客户的浏览器上,session数据放在服务器上。2、cookie不是很安全,别人可以分析存放在本地的cookie并进行cookie欺骗,考虑到安全应当使用session。3、session会在一定时间内保存在服务器上。当访问增多... 查看详情

session和cookie的区别(代码片段)

一·概念理解首先呢,要了解session和cookie的区别先要了解以下几个概念:1、无状态的HTTP协议:   协议,是指计算机通信网络中两台计算机之间进行通信所必须共同遵守的规定或规则,超文本传输协议(HTTP)是一种... 查看详情

session,cookie,sessionstorage,localstorage的区别及应用场景(代码片段)

session,cookie,sessionStorage,localStorage的区别及应用场景浏览器的缓存机制提供了可以将用户数据存储在客户端上的方式,可以利用cookie,session等跟服务端进行数据交互。一、cookie和sessioncookie和session都是用来跟踪浏览器用户身份的会... 查看详情

session,cookie,sessionstorage,localstorage的区别及应用场景(代码片段)

...可以将用户数据存储在客户端上的方式,可以利用cookie,session等跟服务端进行数据交互。一、cookie和sessioncookie和session都是用来跟踪浏览器用户身份的会话方式。区别:1、保持状态:cookie保存在浏览器端,session保存在服务器端2... 查看详情

你真的了解cookie和session吗?(代码片段)

...在做面试官的时候,曾经问过很多朋友这个问题:Cookie和Session有什么区别呢?大部分的面试者应该都可以说上一两句,比如:什么是Cookie?什么是Session?两者的区别等。但如果再往深入探讨的话,就慢慢有一些朋友不太了解了... 查看详情

java面试小短文cookie和session的区别(代码片段)

...#xff0c;不定期更新面试小短文。欢迎一键三连!Cookie和Session的区别  Cookie是客户端浏览器用来保存服务端数据的一种机制,当我们通过浏览器去进行网页访问的时候,服务器可以把某一些状态数据以key-value的形式写... 查看详情

[转]浅谈session,cookie,sessionstorage,localstorage的区别及应用场景(代码片段)

...可以将用户数据存储在客户端上的方式,可以利用cookie,session等跟服务端进行数据交互。一、cookie和sessioncookie和session都是用来跟踪浏览器用户身份的会话方式。区别:1、保持状态:cookie保存在浏览器端,session保存在服务器端2... 查看详情

session和cookie的区别和联系(代码片段)

...别简单说就是Cookie通过在客户端记录信息确定用户身份,Session通过在服务器端记录信息确定用户身份。关于CookieCookie实际上是一小段的文本信息。客户端请求服务器,如果服务器需要记录该用户状态,就使用response向客户端浏览... 查看详情

cookie和session(代码片段)

Cookie和SessionCookie和SessioncookieSession流程例子cookie与HTTPCookie和Session的区别HTTP协议是一种无状态的协议,但是在现实生活中希望出现会话管理,所以出现了cookie和session机制。应用场景:例如:登录,注册…需要... 查看详情

cookiessessionstorage和localstorage解释及区别(代码片段)

...可以将用户数据存储在客户端上的方式,可以利用cookie,session等跟服务端进行数据交互。一、cookie和sessioncookie和session都是用来跟踪浏览器用户身份的会话方式。区别:1、保持状态:cookie保存在浏览器端,session保存在服务器端2... 查看详情

cookie和session的工作流程及区别(附代码案例)(代码片段)

....2在HTTP协议中流式传输和分块传输编码的区别二、Cookie和Session2.1Cookie2.2Session2.3Cookie和Session的区别三、servlet中与Cookie和Session相关的API3.1HttpServletRequest类中的相关方法:3.2HttpServletResponse类中的相关方法3.3HttpSession类中的相关... 查看详情

前后端接口鉴权全解cookie/session/token的区别(代码片段)

...议收藏夹!本文主要解释与请求状态相关的术语(cookie、session、token)和几种常见登录的实现方式,希望大家看完本文后可以有比较清晰的理解,有感到迷惑的地方请在评论区提出。Cookie众所周知,http是无状态协议,浏览器和... 查看详情

session和cookie的用法及区别(代码片段)

Session、Cookie概念1.1概念理解1.1.1无状态的HTTP协议协议:是指计算机通信网络中两台计算机之间进行通信所必须共同遵守的规定或规则。超文本传输协议(HTTP):是一种通信协议,它允许将超文本标记语言(HTML)文档从Web服务器传送... 查看详情

session和cookie(代码片段)

这里写自定义目录标题一、从问题开始1.1Session是什么?1.2Session何时创建,何时销毁,存在哪里?1.3Session和JSession的区别1.4Session和Cookie,Cookie存在哪里,生命周期是什么二、Session2.1在哪里创建,何时创... 查看详情

java面试小短文cookie和session的区别(代码片段)

...#xff0c;不定期更新面试小短文。欢迎一键三连!Cookie和Session的区别  Cookie是客户端浏览器用来保存服务端数据的一种机制,当我们通过浏览器去进行网页访问的时候,服务器可以把某一些状态数据以key-value的形式写... 查看详情