认识Token和Cookie

1、token和cookie有什么区别?

​ 1.1 存储位置及方式:Cookie是浏览器用来存储本地信息的文件,有一定的存储限制,而Token是由服务器按一定算法生成的密令,可以由前端指定存放到localStorage、sessionStorage或cookie中。

​ 1.2 功能特性:每次浏览器发起HTTP请求都会自动携带Cookie内容一起发送给服务器,而Token严格来说只是程序员定义的字符串,没有任何自主功能,所以浏览器发起的HTTP请求不会自动携带Token字符串。

​ 1.3 Token相对于Cookie机制的优势在于支持跨域访问,在服务端不需要存储session信息,因为Token 自身包含了所有登录用户的信息。此外,Token也不依赖于Cookie,所以不需要考虑对CSRF(跨站请求伪造)的防范。

​ 1.4 生命周期:当用户登出后,Cookie会注销,而Token不会,因为是一个字符串,但可以手动增加相关操作去实现这个功能。

2、token和cookie使用场景?

​ 2.1 Token主要用于身份验证和授权。在单页面应用程序(SPA)和Web API中,Token被广泛使用以确保用户身份的安全性和授权的准确性。例如,在用户登录后,服务器通常会生成一个Token并将其发送给客户端。客户端在后续的请求中将该Token发送回服务器,服务器验证Token的有效性并据此授予用户相应的权限。

​ 2.2 Cookies则主要用于跟踪用户状态和提供连续的服务。例如,在购物车功能中,Cookie可以存储用户的购物车信息,以便用户在浏览不同页面时保持商品选择。另外,Cookies还可以用于实现“记住我”功能,即允许用户在登录后无需每次都输入用户名和密码。

3、token和cookie的生命周期

​ Token的生命周期由服务器设置,一般取决于具体的应用和安全需求。Token在服务器端生成,并发送给客户端。在后续的请求中,客户端将Token发送回服务器,服务器验证Token的有效性并据此授予用户相应的权限。Token的安全性较高,因为它们存储在服务器端,并且通常会设置有效期和访问权限限制。在达到有效期或访问权限被限制时,Token会被服务器端销毁或过期,需要重新生成。

​ Cookies的生命周期则由浏览器设置,取决于用户的浏览器设置和Cookie的有效期。当用户关闭浏览器时,所有的Cookie通常会被清除。但是,在某些情况下,如“记住我”功能或购物车功能,Cookies可能会被设置为持久化,即浏览器关闭后仍然可以保留一段时间。Cookies的生命周期也可以由服务器设置,通过设置Cookie的maxAge属性来控制其有效期。一旦Cookie过期或被删除,它将不再被浏览器发送到服务器。

​ 需要注意的是,由于Cookie存储在客户端并且可能被拦截或篡改,因此它们的安全性相对较低。在处理敏感信息(如身份验证信息)时,建议使用Token或其他更安全的方式。

4、如何获取cookie?

​ 4.1 python代码

# 通过session对象获取cookie
def get_cookie_api():
session = requests.session()
get_url = 'https://cooperation.uniontech.com/wwwapi/Login/MDAccountLogin'
data = {
"password": "tPH1iyV+/FcFH9neCkjzNnuKSxKOSNU94DGp2r10oZn5YR3Wl+aihum9PBeTeMoPuwU"
"/cFLzQW4IlBLkz5S3DhvwBBmvXg6jxkXwccDp5nMPr2L6PwCNW1soqIEWP1W2ylBAfJi"
"CBeN2K36UXckqWQ63dH5tUi1CwNAcSrGoI5M=",
"isCookie": False,
"captchaType": 1,
"account": "Io9tZtaCE6R4yfpRrLFV6azDjpXKUCjNdjOeIOI32y9bVYHfOUA+iZUXFRKQSvszFN7i0"
"Meyvr5wgurnWy/9fI4/MZn4cIzM+MPUqUcZyqbE82n1i0EaWpl6jpNwBjX7XDOyjSyGhBD"
"m3X2ejKVghWHwgdLqEugi6+rOSTnJiaw="
}
headers = {"content-type": "application/json"}
session.post(url=get_url, json=data, headers=headers)
cookie = session.cookies.get_dict()
for key, values in cookie.items():
cookie = key + "=" + values
return cookie # 在headers中获取cookies信息
def get_cookies():
url = 'https://xxxxxxx.com/wwwapi/Login/MDAccountLogin'
data = {
"password": "tPH1iyV+/FcFH9neCkjzNnuKSxKOSNU94DGp2r10oZn5YR3Wl+aihum9PBeTeMoPuwU"
"/cFLzQW4IlBLkz5S3DhvwBBmvXg6jxkXwccDp5nMPr2L6PwCNW1soqIEWP1W2ylBAfJi"
"CBeN2K36UXckqWQ63dH5tUi1CwNAcSrGoI5M=",
"isCookie": False,
"captchaType": 1,
"account": "Io9tZtaCE6R4yfpRrLFV6azDjpXKUCjNdjOeIOI32y9bVYHfOUA+iZUXFRKQSvszFN7i0M"
"eyvr5wgurnWy/9fI4/MZn4cIzM+MPUqUcZyqbE82n1i0EaWpl6jpNwBjX7XDOyjSyGhBDm3"
"X2ejKVghWHwgdLqEugi6+rOSTnJiaw="
}
headers = {"content-type": "application/json"}
response = requests.post(url, json=data, verify=True, headers=headers)
# print(response.json())
headers_cookie = response.headers.get('Set-Cookie')
print(headers_cookie)
cookies = headers_cookie.split(';')[3].split(',')[1]
return cookie

​ 4.2 postman_api接口获取

​ 4.3 apifox_api接口获取

认识Token和Cookie的更多相关文章

  1. Token ,Cookie和Session的区别

    在做接口测试时,经常会碰到请求参数为token的类型,但是可能大部分测试人员对token,cookie,session的区别还是一知半解. Cookie cookie 是一个非常具体的东西,指的就是浏 ...

  2. 七、vue中将token存到cookie

    使用js-cookie工具: 1.npm i js-cookie //安装2.import Cookies from 'js-cookie' //引用 // 存入cookie:Cookies.set( ...

  3. Token ,Cookie、Session傻傻分不清楚?

    作者 | 王菜鸟1993 来源 | cnblogs.com/JamesWang1993/p/8593494.html 在做接口测试时,经常会碰到请求参数为token的类型,但是可能大部分测试人员对to ...

  4. 前后端分离 token和cookie对比

    HTTP协议本身是无状态的,所以需要一个标志来对用户身份进行验证 1.cookie 用户登录成功后,会在服务器存一个session,同时发送给客户端一个cookie,这个cookie里面有唯一标识该用 ...

  5. Token 、Cookie和Session的区别

    本文转至http://blog.csdn.net/tobetheender/article/details/52485948 https://blog.csdn.net/axin66ok/articl ...

  6. 关于Token和Cookie做权限校验的区别及Token自动续期方案

    title: 关于Token和Cookie做权限校验的区别及Token自动续期方案 categories: 后端 tags: - .NET Token和Cookie的区别 首先,要知道一些基本概念:h ...

  7. token解决cookie的弊端

    token解决cookie的弊端 目录 token解决cookie的弊端 cookie的弊端 token解决弊端一 什么是token和JWT JWT的构成 token工作流程 token解决弊端二 C ...

  8. 快速理解Token,Cookie,Session

    在Web应用中,HTTP请求是无状态的.即:用户第一次发起请求,与服务器建立连接并登录成功后,为了避免每次打开一个页面都需要登录一下,就出现了cookie,Session. Cookie Cookie ...

  9. Java Web 开发必须掌握的三个技术:Token、Cookie、Session

    在Web应用中,HTTP请求是无状态的.即:用户第一次发起请求,与服务器建立连接并登录成功后,为了避免每次打开一个页面都需要登录一下,就出现了cookie,Session. Cookie Cookie ...

  10. 简单说明一下Token ,Cookie,Session

    在Web应用中,HTTP请求是无状态的.即:用户第一次发起请求,与服务器建立连接并登录成功后,为了避免每次打开一个页面都需要登录一下,就出现了cookie,Session. Cookie Cookie ...

随机推荐

  1. 避免大量ifelse(枚举、工厂模式、策略模式)

    枚举 public class Test { public static void main(String[] args) { System.out.println(judge("ROLE_ ...

  2. ToDesk云电脑推出Web端,这意味着什么?

    在数字化转型的浪潮中,云计算技术正在以前所未有的速度改变着我们的生活方式和工作模式.作为云计算领域的一股新生力量,ToDesk云电脑凭借其卓越的性能和便捷的使用体验,一经上线,便赢得了众多用户的青睐. ...

  3. css动画效果(边框线条流动效果)

    1.整体效果 https://mmbiz.qpic.cn/sz_mmbiz_gif/EGZdlrTDJa6FxrVbiamfvb7b0H4qcDzZRwq3PqvXfuMDaPZ44VUic1h2WR ...

  4. Git操作【常用操作命令】

    Git操作指令 1. git init 初始化一个git 仓库: 2. git add test.txt 添加一个文件到仓库,可以添加多个,一空格隔开: 3. git commit -m " ...

  5. Kriging 模型 —— 克里金法 —— 最优插值

  6. 记录CentOS 部署 express 项目

    第一步.安装 node.js1.在服务器上 /opt 下创建 node 文件夹,并进入该文件夹mkdir /opt/nodecd /opt/node 2.下载 node.js3.下载的 node.js ...

  7. NZOJ 模拟赛3

    T1 地理geo 奶牛们刚学习完地理课,知道地球是个球.他们非常震惊,满脑子都是球形. 他们试图把地球表面看成一个NxN (1 <= N <= 100)的方格,但是顶端连接着底部.左边连接 ...

  8. nginx防盗链接的使用

    以 local.hyperf.com为例 nginx配置文件如下 # 至少需要一个 Hyperf 节点,多个配置多行 upstream hyperf { # Hyperf HTTP Server 的 ...

  9. lua获取请求参数以及在nginx.conf中使用

    -- 获取请求路径 local request_uri = ngx.var.request_uri -- 从 header中取值 local token = ngx.req.get_headers() ...

  10. golang读取文件

    golang 按行读取文件 file, err := os.Open("app-2019-06-01.log") if err != nil { log.Fatal(err) } ...