GitHub

git remote -v 看本地 fetch 和 push 用的远程地址

git remote add 别名origin 仓库地址https://github.com/xx/xxx 添加远程仓库

git pull origin main --rebase 拉远程代码,选合并策略,rebase 按项目文件的顺序?不按时间节点

git push -u origin main -u 将别名和分支名默认,之后直接 git push 就可以了

git switch -c new-feature -c 代表新建分支,跟 checkout 功能重合,但是 switch 专门给分支用的,改完后 git push origin new-feature

pr 合并 删除分支

本地仓库依旧两个分支,在 main 同步 git pull 之后 删除新分支 git branch -d new-feature

git tag -a v1.0.0 -m "标签信息" 打标签

git tag 查看标签

git push origin v1.0.0

release 对应 标签,可以手动生成

HTTP 是无状态的,所以需要存储

明文保存肯定不行,直接可以复制粘贴修改

session 会话,浏览器访问服务器就是会话的开始,那结束呢?

不设置时间就在关闭浏览器后删除

服务器需要存 session id,如果大量用户就要存多份,多服务器就更多了,所以数据库存,但数据库出问题了呢?各种分布式问题下,JWT 出现了

JSON Web Token

header.payload.signature header 什么算法来生成签名

payload 特定数据(有效期之类的)

header payload 通过 Base64 编码生成两段,还有一个 secret 签名密码结合生成最后的 signature 签名

GPT:

  1. Cookie:

    • Cookie 是最早的客户端存储机制之一,由服务器通过 HTTP 响应头部发送到浏览器,并由浏览器存储。
    • Cookie 可以包含验证信息、用户偏好、会话状态等数据。
    • 服务器可以设置 Cookie 的过期时间,如果没有设置过期时间,则默认为会话 Cookie,即在浏览器关闭时失效。
    • Cookie 在每个后续的 HTTP 请求中都会自动发送到服务器,因此它们经常用于身份验证和会话管理。
    • 安全性问题:由于 Cookie 数据在每次请求时都会被发送到服务器,因此可能会被拦截(如果不是在加密的 HTTPS 连接上)。同时,Cookie 也容易受到跨站脚本攻击(XSS)。
  2. Session:

    • Session 是服务器端的存储机制,用于存储用户特定的会话数据。
    • 当用户第一次访问服务器时,服务器会创建一个 Session 对象,并生成一个唯一的 Session ID 来标识这个 Session。
    • Session ID 通常会通过 Cookie 发送给客户端浏览器(也可以通过 URL 重写等其他方式)。
    • 客户端浏览器在随后的每次请求中都会发送这个 Session ID,服务器接收到 Session ID 后,会查找相应的 Session 数据,以识别用户和用户的会话状态。
    • 安全性问题:如果 Session ID 被拦截(如在非 HTTPS 连接上),攻击者可能会劫持用户的会话(会话劫持攻击)。
  3. Token (如 JSON Web Tokens, JWT):

    • Token 是一种服务器生成的包含验证信息的编码字符串,通常使用 JWT 格式。
    • Token 在客户端存储(通常在内存、localStorage 或 sessionStorage 中),并在每次请求时,通常通过 HTTP 请求头部发送到服务器。
    • 与 Session 不同,Token 通常包含所有必要的用户验证信息,使得服务器无需维护状态(无状态),服务器可以仅通过 Token 验证用户身份。
    • Token 可以被设计为自包含的,包含用户信息、过期时间等,并且通常使用服务器的私钥进行签名,确保数据的完整性和真实性。
    • 安全性问题:虽然 Token 本身较难篡改,但仍需通过 HTTPS 传输以防止被拦截。此外,如果 Token 被盗用,攻击者可以获得用户的访问权限,直到 Token 过期。