认识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五子棋_06 坐标表示到图形表示的算法 Python实现
AI五子棋 第六步 恭喜你到达第六步! 你已经成功实现了公钥体系最为关键的部分.现在服务器相信你就是你了,下面开始你的战斗. 五子棋的棋盘有15×15个交点,一共有225个交点,我们可以在每一个交点上 ...
- 【小记】Docker容器间SSH公钥自动交换实现免密登录的一次尝试
咋想到这茬了 最近开始忙毕设的事儿了,想部署个伪分布式的Spark + Hadoop集群来进行测试.思来考去,最终咱把目光放在了Docker上. 盘了两天,发现这玩意意外的有趣,镜像构建好后开箱即用, ...
- 如何看待:以色列在真主党订购的5000台寻呼机中放了TNT
日常生活等关键物品的生产必须要有国内完全掌握,美国.日本.以色列等国惯用的这种暗杀方法.如果不能在本国国内做到自主可控的产品生产,那么无疑是把自己的脑袋交给敌人来保护,随时都有丢命的可能. 同时,这也 ...
- 焕然一新!TinyVue 组件库 UI 大升级,更符合现代的审美!
你好,我是 Kagol,个人公众号:前端开源星球. 自从 TinyVue 组件库去年开源以来,一直有小伙伴反馈我们的 UI 不够美观,风格陈旧,不太满足现阶段审美. "TinyVue 给我的 ...
- js-xlsx 前段读取excel
JavaScript读取和导出excel示例(基于js-xlsx) 放入参考链接 http://demo.haoji.me/2017/02/08-js-xlsx/ github官网 https://g ...
- 高德地图API-搜索提示并定位到位置,卫星地图和标准地图的切换
// _yourMap地图实例 _yourMap.plugin(["AMap.MapType"], function () { //添加地图类型切换插件 //地图类型切换 mapT ...
- Metal 开发教程(二)
https://developer.apple.com/documentation/quartzcore/cametallayer?language=objc#3385893 CAMetalLayer ...
- git 暂存区问题
如果需要合别人的代码进来 需要暂时把自己的代码stash一下,用 git stash 放入暂存 如果需要释放出来用 git stash pop 当暂存用的越来越多,问题出现了需要清理暂存区队列,使用代 ...
- MySQL原理简介—5.存储模型和数据读写机制
大纲 1.为什么不能直接更新磁盘上的数据 2.为什么要引入数据页的概念 3.一行数据在磁盘上是如何存储的 4.一行数据中的NULL值是如何处理的 5.一行数据的数据头存储的是什么 6.一行数据的真实数 ...
- golang之路由库gorilla/mux
gorilla/mux是 gorilla Web 开发工具包中的路由管理库.gorilla Web 开发包是 Go 语言中辅助开发 Web 服务器的工具包.它包括 Web 服务器开发的各个方面, 有表 ...