基础学习-HTTP、session和cookie

news/2024/5/18 12:26:40 标签: http, session, cookie, web开发, 浏览器行为
http://www.w3.org/2000/svg" style="display: none;">

sessioncookie_0">HTTP、sessioncookie

基础知识

1. 浏览器到底做了啥

当我们在浏览器的地址栏中,输入网址,敲击回车键,浏览器都做了什么呢?

  1. 找到他的电话号码 根据域名找到服务器地址
  2. 打给他 简历TCP三次握手链接
  3. 把我们想要的东西告诉他 发送HTTP请求给服务器
  4. 他找到我们想要的东西 服务器处理请求
  5. 通过电话返回来 服务器返回HTTP响应

2. 什么是HTTP请求

HTTP请求,就是浏览器与服务器通话内容的 一种格式:HTTP请求(Request)格式和HTTP响应(Response)格式。
HTTP请求格式:请求行表明我想干啥+ 请求头表述自己的要求+ 请求体补充描述我想干啥,就是请求的参数
HTTP响应格式:状态行服务器的回应+ 消息头表述响应的要求+ 消息体服务器处理的结果

Request:
请求行:
	Request Method                            Request URL  HTTPv.
	我是用哪种电话打得电话 (POST,GET,DELETE...) 我要干啥      我用的哪个版本的协议
例: GET /index.html HTTP/1.1

请求头:
    Accept: 我能够解析的结果格式
    Accept-Encoding: 我能够解析的结果压缩格式
	Accept-Language: 我说的是什么语言
	Cache-Control: max-age=0
	Connection: 返回信息后,是否挂掉电话
	Host: blog.csdn.net
	Referer: 你电话号码的区号
	User-Agent: 我的电话型号

请求体:
	用户名=张三
	是否获取地址=是
Response:
状态行:
	HTTP协议版本 状态码 状态描述
	HTTP/1.1    200    OK

响应头:
	Connection: 返回信息后,是否挂掉电话
	Content-Encoding: 我的结果的压缩格式
	Content-Type: 我的结果的类型
	Date: 我回应你的时间
	Server: 我用的哪种电话
	Transfer-Encoding: 结果传输格式

响应体:
	姓名=张三
	住址=here
	电话=110

cookie_53">3. Session和cookie是干啥的

因为HTTP1.1是默认长连接的,也就是说,我们打通服务器的电话之后,他是不会关掉的。我们请求一次之后,可以在请求第二次。但是这个时候问题来了,服务器是面向多用户,且HTTP请求是无状态的。他并不知道,第二次跟他请求的是谁。当我们需要判断用户权限的时候,比如登录状态,每一次请求都要走一次登录流程,是很浪费时间的。那怎么办呢,我们有下面两种方式来解决这个问题

  1. 服务器拿个小本本记一下,这个电话是谁打来的,他的用户信息是什么 session机制
  2. 我们自己拿小本本记一下,服务器把我们的请求信息,记录在小本本的哪里了 cookie机制

这两个机制是什么意思呢?首先我们假设我们的网站是需要用户登录后访问的。

  1. 当我们和服务器接通电话
  2. 服务器会判断一下我们是否有登录信息。我们假设第一次登录网站,没有登录信息
  3. 然后服务器会跟我们要用户名和密码,他要验证一下身份
  4. 身份验证通过后,他把我的电话信息,用户信息记录在小本本(session)中
  5. 服务器会把记录信息的位置(session_id),返回给我们(response)通常是放在cookie返回的
  6. 然后我们把cookie记录再我们自己的小本本上
  7. 下一次请求的时候,告诉服务器我们记录的cookie
  8. 服务器解析cookie,然后找到我们的登录信息,证明我们登录了,它会处理请求
  9. 返回请求结果

sessioncookie可以是相互独立存在的,可以单独有session,或者单独有cookie
没有必要的情况下,sessioncookie都是可以不存在的。因为他是在无状态的HTTP链接中判断用户身份的,如果你的网站不需要这种需求,可以不用创建session或者cookie

总结

sessioncookie_74">HTTP的长连接和sessioncookie到底是什么关系。

  1. http长连接是通过header中的Connection: keep-alive来控制的,和sessioncookie没啥关系。
    sessioncookie超时重新生成或者验证就可以了,并不会影响HTTP长连接。
    HTTP是一个通道,sessioncookie分别是服务器端和浏览器端的管理员,他们只负责你在通信过程中的身份验证问题,并不负责通道是否连通。
  2. sessioncookie的声明周期和HTTP的生命周期到底有没有联系。
    没啥关系,自己搞自己的。

http://www.niftyadmin.cn/n/615335.html

相关文章

SQL实际使用-指定日期所在周的周一日期

SELECT DATE_SUB(2019-10-20,INTERVAL DATE_FORMAT(DATE_SUB(2019-10-20, INTERVAL 1 DAY),%w) DAY);讲解: DATE_FORMAT(DATE_SUB(‘2019-10-20’, INTERVAL 1 DAY),’%w’) 这句话的主要作用是,获取当前日期与本周周一相差天数。 如果今天是周五&#…

PHP实际使用-指定日期所在周的周一日期

$date_pay_w date(N, strtotime(2019-10-19)) - 1; $date_pay_sta date(Ymd, strtotime("-{$date_pay_w} days", $date_pay));讲解: 如果今天是周五,则周一为当前日期减4天;如果今天是周三,则周一为当前日期减2天&am…

JS插件-momentjs时间操作插件

暂时没有对相关用法进行整理,但是官方文档是中文切非常清晰。可以查找需要的内容官方文档

ECHARTS实际应用-一个接口,单一页面,多个表格

echarts是一个比较好用的表格展示。通过不同的配置&#xff0c;就可以实现饼图&#xff0c;柱图以及折线图等。 方便数据展示。下面就是在同一个页面&#xff0c;通过配置文件创建四个表格的例子。 <!-- 编写HTML文件--> <!-- 引入你下载的min.js文件--> <scri…

CLIPBOARD-通过前端JS代码实现复制到粘贴板的功能

CLIPBOARD是一个插件&#xff0c;用来实现前端的复制功能。官网 下载链接在官网的这个位置 将压缩包内dist文件夹下面的文件复制到你的项目中&#xff0c;然后在页面引用即可 <!-- 引用 --> <script src"{$Think.const.PUBLIC_PATH}/js/upload/clipboard.min.j…

django2官方文档阅读记录-怎么使用session(How to use sessions)

怎么使用django的session模块 session主要是用来管理用户访问状态的。在HTTP无状态的特性下&#xff0c;session使用户在服务器端有了状态&#xff0c;减少了验证流程&#xff0c;提高响应效率。django本身已经封装了管理session的模块&#xff0c;我们来看看他是怎么样的吧。…

MarkDown添加离线图片

[TOC]MarkDown添加离线图片 准备好你的图片base64编码 MarkDown添加离线图片, 是通过Base64编码实现的. 你可以通过网站(http://tool.chinaz.com/tools/imgtobase), 获取你的图片Base64编码. 如果你是技术控, 也可以自己转义哦. import base64fopen(test_img.png,rb) ls_fbas…

特殊数字符号整理 - 圆圈数字

日常用到圆圈数据进行记录和整理. ①②③④⑤⑥⑦⑧⑨⑩⑪⑫⑬⑭⑮⑯⑰⑱⑲⑳