认识Token和Cookie
认识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的更多相关文章
- Token ,Cookie和Session的区别
在做接口测试时,经常会碰到请求参数为token的类型,但是可能大部分测试人员对token,cookie,session的区别还是一知半解. Cookie cookie 是一个非常具体的东西,指的就是浏 ...
- 七、vue中将token存到cookie
使用js-cookie工具: 1.npm i js-cookie //安装2.import Cookies from 'js-cookie' //引用 // 存入cookie:Cookies.set( ...
- Token ,Cookie、Session傻傻分不清楚?
作者 | 王菜鸟1993 来源 | cnblogs.com/JamesWang1993/p/8593494.html 在做接口测试时,经常会碰到请求参数为token的类型,但是可能大部分测试人员对to ...
- 前后端分离 token和cookie对比
HTTP协议本身是无状态的,所以需要一个标志来对用户身份进行验证 1.cookie 用户登录成功后,会在服务器存一个session,同时发送给客户端一个cookie,这个cookie里面有唯一标识该用 ...
- Token 、Cookie和Session的区别
本文转至http://blog.csdn.net/tobetheender/article/details/52485948 https://blog.csdn.net/axin66ok/articl ...
- 关于Token和Cookie做权限校验的区别及Token自动续期方案
title: 关于Token和Cookie做权限校验的区别及Token自动续期方案 categories: 后端 tags: - .NET Token和Cookie的区别 首先,要知道一些基本概念:h ...
- token解决cookie的弊端
token解决cookie的弊端 目录 token解决cookie的弊端 cookie的弊端 token解决弊端一 什么是token和JWT JWT的构成 token工作流程 token解决弊端二 C ...
- 快速理解Token,Cookie,Session
在Web应用中,HTTP请求是无状态的.即:用户第一次发起请求,与服务器建立连接并登录成功后,为了避免每次打开一个页面都需要登录一下,就出现了cookie,Session. Cookie Cookie ...
- Java Web 开发必须掌握的三个技术:Token、Cookie、Session
在Web应用中,HTTP请求是无状态的.即:用户第一次发起请求,与服务器建立连接并登录成功后,为了避免每次打开一个页面都需要登录一下,就出现了cookie,Session. Cookie Cookie ...
- 简单说明一下Token ,Cookie,Session
在Web应用中,HTTP请求是无状态的.即:用户第一次发起请求,与服务器建立连接并登录成功后,为了避免每次打开一个页面都需要登录一下,就出现了cookie,Session. Cookie Cookie ...
随机推荐
- AI五子棋_02_03 Get传输数据 公共密钥
AI五子棋 第二步 恭喜你到达第二步! 警告:如果你是直接使用浏览器获得本页地址的话,请你返回第一步. 在前一步里,你得到的这样的返回结果 {"is_success": true, ...
- html 根据配置项统一检查文本框数据规范
<div> 中文名:<input id="txtName" type="text" /><br /> 身份证号:<in ...
- 思科 ISE 3.4 发布新增功能概览
思科 ISE 3.4 发布,新增功能概览 目录 Active Directory 首选 DC 选择 保留使用设置 本地化 ISE 安装 FQDN 到 SGT 映射 思科 ISE 和 TrustSe ...
- 2023年10月,红米(小米)note 8 pro 优化记
看了红米的note 13 pro和note 12 turbo的参数和价格后,我决定下单买个note8 pro的手机壳,确实有新手机的感觉了. 我note8 pro手机参数如下 MIUI 12.0.5 ...
- Docker配置Trojan代理
1.遇到的问题 在做云计算作业,使用阿里云的ECS服务器尝试使用docker拉取镜像的时候,发现一直无法从仓库拉取,更换了多个镜像源也没有解决问题,于是决定学会去配置linux的代理,记录过程. 2. ...
- HarmonyOS-Chat聊天室|纯血鸿蒙Next5 api12聊天app|ArkUI仿微信
自研原生鸿蒙NEXT5.0 API12 ArkTS仿微信app聊天模板HarmonyOSChat. harmony-wechat原创重磅实战纯血鸿蒙OS ArkUI+ArkTs仿微信App聊天实例.包 ...
- FastJson漏洞复现
FastJson漏洞复现 环境:vulhub/fastjson Fastjson是阿里巴巴公司开源的一个高性能的Java库,专门用于处理JSON数据格式. 它不仅能够将Java对象序列化为JSON格式 ...
- 2023-05 多校联合训练 ZJNU站 热身赛
猫猫接币币 给定两个容量分别为a和b的盒子,已知第i秒天上会掉下i个金币,你会从第1秒开始接金币,每秒钟你可以选择任意一个盒子接金币,但是不能不选,你必须使得两个盒子刚好装满,请问是否存在某个时刻,使 ...
- 从Hbase shell理解列式存储
列存储和行存储在理解上的差别挺大,特别是在非常数据行存储之后. 在行存储中,每张表的结构是固定的,某一列可以没有值但是这一列是必须在的.那么可以理解行存储的数据是结构化的. 但是列存储确有每行的数据却 ...
- MySQL底层概述—9.ACID与事务
大纲 1.ACID之原子性 2.ACID之持久性 3.ACID之隔离性 4.ACID之一致性 5.ACID的关系 6.事务控制演进之排队 7.事务控制演进之排它锁 8.事务控制演进之读写锁 9.事务控 ...