token和session与cookie区别

本文介绍了HTTP的无状态特性,以及如何通过Cookie、Session和Token来保存用户信息,实现身份验证。Token作为无状态机制,减轻服务器压力,适用于单点登录等场景。同时,还讨论了Session的有状态机制以及Cookie的使用特点。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

 首先:

http本身无状态,说白了就是不保存任何用户信息,所以引入cookie(客户端方案)、session(服务端方案)来保存用户信息

Token:

        服务端生成得一串字符串,作为客户端请求得一个令牌,每次登录时,服务器生成一个Tocken返回客户端,以后客户端带上tocken访问数据,无需拿用户名密码。

工作原理:

        用户提供凭据(例如用户名密码)进行身份验证;

        服务器验证凭据,并在验证通过后生成一个token;

        服务器将Token发送给客户端(通常在http响应中的头部或响应体中)

        客户端保存Token,并在后续的请求中将其发送个服务器

        服务器接收到请求后,验证token,如果验证通过允许用户访问资源

Token位置:

        http请求头内:

        在http请求和响应中,可以在“Authorization”或“Access-Control-Token”头部字段中包含令牌。

        GET /api/userinfo HTTP/1.1
        Host: example.com
        Authorization: Bearer YOUR_TOKEN_HERE

        cookie内:

        GET /index.html HTTP/1.1
        Host: www.example.com
        Cookie: session_token=YOUR_TOKEN_HERE; username=JohnDoe

        请求参数GET/POST类型

        POST /api/login HTTP/1.1
        Host: example.com
        Content-Type: application/json
        {
        "username": "johndoe",
        "password": "secret",
        "token": YOUR_TOKEN_HERE
        }

        隐藏在提交的表单中

        POST /api/login HTTP/1.1
        Host: example.com
        Content-Type: application/x-www-form-urlencoded
        username=johndoe&password=secret&token=YOUR_TOKEN_HERE

目的:

        减轻服务器压力,减少频繁得查询数据库,使服务器更加健壮

优点:

        扩展性强,安全

应用:

        防止表单重复提交,anti csrf攻击(跨站点请求伪造),身份验证(单点登录)

GPT:

        Tocken是一种无状态得身份验证机制(无状态stateless是指:进行通信时不会在服务器端保存客户端得任何状态信息,每次请求多是独立得,服务器不能从之前得任何请求中得到当前请求得信息;有状态stateful:进行通信时会在服务器端保存客户端得状态信息,例如session,有状态得存储机制)

session(会话):

        一种有状态得服务器端机制,跟踪用户和服务器端得交互状态。当用户首次访问服务器时,服务器会为其创建一个唯一得sessionId,并将该Id以cookie得形式发送给客户端保存,客户端每次发送请求时,都会带上session Id,服务器根据该id识别用户并维持该用户得状态。服务端可以在session中存储用户相关得数据,数据存储在服务器上,用户无法直接访问,存储大得数据比cookie合适

        

cookie (HTTP cookie)

        存储在客户端(浏览器)上得小型文本文件,由服务器通过HTTP相应头部发送给客户端,然后客户端将其保存在本地,每次客户端向服务器发送请求时,会自动将cookie附加到http请求头中发送给服务器。cookie通常用于记录用户得身份认证信息和保存一个用户偏好设置,

对象:

        针对每一个网站的信息,每个网站对应一个,其他网站无法访问,每次访问网站,浏览器会查找该网站的cookie,有将文件发送出去,   

包含的信息:

        名称(name):指定了cookie的唯一标识符;

        值(value):存储在cookie中的数据;

        过期时间(Expires):可设置,不设置关闭浏览器自动过期;

        path:指定cookie可以在那些路径下使用;

        Domain:指定了那些子域可以访问cookie。格式通常为“.xxx.com”,其中“xxx”为顶级域名;

        Secure:设置了只能用使用https协议才能访问cookie

        HttpOnly:如果cookie中设置了HttpOnly属性,那么通过JavaScript脚本将无法读取cookie信息

  • Cookie是存储在客户端的小型文本文件,用于记录用户的身份认证信息和保存一些偏好设置。
  • Session是一种服务器端的机制,用于跟踪用户与服务器之间的交互状态,服务器端存储Session数据。
  • Token是一种无状态的身份验证机制,用于在客户端和服务器之间进行身份验证和授权,不需要在服务器端存储会话信息。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值