zoukankan      html  css  js  c++  java
  • http协议、cookie及session

    1. HTTP协议是无连接的

    • 网页操作--浏览器--Http协议--web服务器(appache/IIS)
    • 无连接的
    1. 每次连接只处理一个请求,服务器处理完并收到客户端应答,即断开连接
    2. 目的:节省传输时间
    
    • 无状态的

    对于事务处理不具备记忆功能

    2. HTTP消息结构

    • 客户端(浏览器)发送请求
    请求行(请求方法、url、协议版本)、请求头、请求体
    
    • 服务器(appache/IIS)响应请求
    状态行(协议版本、状态码)、响应头、响应正文
    

    3. 状态码

    • 常用
    200 OK; 301 url已转移;
    404 不存在;500 服务器错误
    
    • 分类
    1* 服务器要求继续操作
    2* 成功
    3* 重定向
    4* 客户端错误(url不存在、语法错误等)
    5* 服务器错误
    

    4. cookie原理

    • 客户端发起请求时如果没有通行证,服务器就会在响应内容里给客户端颁发通行证;
    • 之后,客户端所有请求都附带通行证,这样服务器就知道当前请求是谁发出的
    • cookie与域名绑定,浏览器会识别域名,防止cookie被其他域名绑定
    • 每次请求都要携带cookie,因此cookie不能太过庞大
    • cookie通过键值对保存数据
    1. String name:cookie的名称,一旦创建不会变化
    2. Object value:cookie的值
    3. int maxAge:失效时间(单位秒,负数代表临时cookie,关闭浏览器即失效,为0表示将删除,默认-1)
    4. boolean secure:仅安全协议传输(默认false)
    5. String path:指定该域名下哪些路径可以使用该cookie(以/结尾)
    6. String domain:域名(以.开头)
    7. String comment:说明
    8. int version:cookie遵循的版本号(0或者1)
    
    • cookie保存用户名密码的三种方法
    1. 账号密码直接存在cookie,访问时直接与服务器数据库比较(方便,不安全)
    2. 密码加密保存在cookie,访问时解密与服务器数据库比较(也可以不保存密码,而是保存时间戳验证)
    3. 账号密码按照加密规则加密后一起保存在cookie,访问时验证加密规则是否匹配即可(无需查询数据库)
    

    5. session原理

    • 服务器有个记录表,接收到客户端请求后,会在表中查找该客户,找不到就会记录一份客户信息内容,找得到就直接读取客户上次的状态。
    • 大量用户访问时,可能导致session过多而内存溢出,因此session内容也要尽量精简
    • 只有访问动态资源才会触发session,访问时无论是否读写session,session都会更新状态(时间)
    • session需要cokkie作为识别标志(不然还是不知道是哪个客户啊),使用session时,默认生成的cookie的maxAge值为-1(只在当前窗口有效)
  • 相关阅读:
    Delphi编译器属性(特别修饰符Ref,Unsafe,Volatile,Weak)
    .netcore dapr微服务入门
    Net WebApi一个简单的Token验证
    发布订阅和观察者模式
    NET Core创建Windows服务
    jquery.barrager.js弹幕实现
    跨平台中的RN、Flutter,服务端GraphQL、Serverless,Node和Electron
    分布式系统与高并发高可用
    11 个 Linux 命令
    接口幂等性
  • 原文地址:https://www.cnblogs.com/jiukun/p/9325491.html
Copyright © 2011-2022 走看看