【计算机网络】HTTP响应报文Cookie原理

目录

HTTP响应报文格式

一. 状态行

状态码与状态码描述

二. 响应头

一. 前因

二. Cookie的状态管理

结束语


HTTP响应报文格式

HTTP响应报文分为四部分

  • 状态行:包含三部分:协议版本,状态码,状态码描述
  • 响应头:响应体的一些属性信息
  • 空行:由回车符和换行符组成---\r\n
  • 响应体(有效载荷):响应给请求方的内容,如网页,视频,音频等

PS:我们访问腾讯网其中的每一个可以点击的链接,都会发起一次HTTP请求

一. 状态行

状态行包含三部分,彼此之间使用空格分隔

协议版本是服务器使用的HTTP的协议版本。方便和客户端的HTTP协议进行版本兼容

状态码与状态码描述

类别原因短语
1XXInformational(信息性状态码)接收的请求正在处理
2XXSuccess(成功状态码)请求正常处理完毕
3XXRedirection(重定向状态码)需要进行附加操作以完成请求
4XXClient Error(客户端错误状态码)服务器无法处理请求
5XXServer Error(服务器)服务器处理请求出错

  • 2XX状态码
  • 表示服务器已成功收到请求并进行处理
状态码状态码英文名称中文描述
200OK请求成功。一般与GET与POST请求
201Created已创建。成功请求并创建了新的资源。通常用于POST或PUT请求

  • 3XX状态码
  • 表示服务器要求客户端重定向,需要客户端进一步的操作已完成资源的请求
状态码状态码英文名称中文描述
301Moved Permanently永久移动。请求的资源已经被永久的移动到新的URL,返回信息会包括新的URL,浏览器会自动定向到新URL。今后任何新的请求都应使用新的URL替代
302Found临时移动。与301类似。但资源只是被临时移动。客户端应继续原有URL访问
304Not Modified未修改。所请求的资源未修改,服务器返回状态码时,不会返回任何资源(响应信息中不包含响应体)。客户端通常会缓存访问过的资源
  • 4XX状态码
  • 表示客户端的请求有非法内容
状态码状态码英文名称中文描述
401Unauthorized当前请求需要用户验证
403Forbidden服务器已经理解请求,但拒绝执行
404Not Found请求失败。服务器无法根据客户端的请求找到资源(网页)
408Request Timeout请求超时。服务器等待客户端发送的请求时间过长,超时
400Bad Request

1. 语义有误,当前请求无法被服务器理解。除非进行修改,否则客户端不应该重复提交这个请求

2. 请求参数有误

  • 5XX状态码
  • 表示服务器未能正常处理客户端的请求而出现意外错误
状态码状态码英文名称中文描述
500Internal Server Error服务器遇到了不知道如何处理的情况。
501Not Implemented此请求方法不被服务器支持且无法被处理。只有GET和HEAD是要求服务器支持的,它们必定不会返回此错误代码。
503Service Unavailable服务器没有准备好处理请求。由于超载或系统维护,服务器暂时的无法处理客户端的请求。

常见的状态码比如200(OK),404(Not Found),403(Forbidden),302(Redirect 重定向),504(Bad Gatewat)

完整的响应状态码及描述可以参看MDN官方文档:HTTP 响应状态码 - HTTP | MDN

补充:重定向

访问网页的不仅有用户,还有爬虫。永久重定向的应用之一就是服务搜索引擎。当搜索引擎爬虫到一个永久重定向的网页,就会将新的URL替代原先的URL,不需要每次都重定向

二. 响应头

响应头都是以KV关系保存的信息,包含附加动作,响应体(有效载荷)的属性等

常见的响应头:

Content-Length:响应体(有效载荷)的长度

Content-Type:响应体(有效载荷)的类型(网页,图片,音频等)

Content-Language:响应体(有效载荷)的语言环境

Content-Encoding:响应体(有效载荷)的压缩格式

Location:重定向的位置,新的URL地址、配合301,304使用

Connection:如Keep-Alive,表示保持tcp连接不关闭

referer:当前页面是从哪个页面跳转过来的

Set-Cookie:返回sid,供客户端下次访问使用

一. 前因

HTTP是无状态协议,它不对之前发生的请求和响应的状态进行管理。也就是说,无法根据之前的状态进行本次的请求处理

上述现象导致,比如访问B站,VIP视频需要登录验证,但每换一个VIP视频都需要登录验证一次,因为无法根据之前的登录状态进行本次请求处理。这显示是不能接受的

二. Cookie的状态管理

图片来自网络

Cookie是服务端生成的,保存在客户端。Cookie有两种保存方法:

  1. 内存级:保存浏览器运行的内存中
  2. 文件级:(1). 持久,需要手动清理 (2). 非持久,有过期时间

客户端(浏览器)将Cookie保存,并在后续的访问中,将Cookie携带在HTTP请求报文中

结束语

本篇博客到此结束,感谢看到此处。
欢迎大家纠错和补充
如果觉得本篇文章对你有所帮助的话,不妨点个赞支持一下博主,拜托啦,这对我真的很重要。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/265278.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Vue实现注册页面的用户交互

📑前言 本文主要是【Vue】——Vue实现注册页面的用户交互的文章,如果有什么需要改进的地方还请大佬指出⛺️ 🎬作者简介:大家好,我是听风与他🥇 ☁️博客首页:CSDN主页听风与他 🌄每…

基于TCP的多路复用

1. 知识点 目前支持I/O多路复用的系统调用有select,pselect,poll,epoll。与多进程和多线程技术相 比,I/O多路复用技术的最大优势是系统开销小,系统不必创建进程/线程,也不必维护这些进 程/线程,…

class073 背包dp-01背包、有依赖的背包【算法】

class073 背包dp-01背包、有依赖的背包【算法】 算法讲解073【必备】背包dp-01背包、有依赖的背包 code1 P1048 [NOIP2005 普及组] 采药 // 01背包(模版) // 给定一个正数t,表示背包的容量 // 有m个货物,每个货物可以选择一次 // 每个货物有自己的体积…

想进阶JAVA高级程序员吗?多线程必学

❤️作者主页:小虚竹 ❤️作者简介:大家好,我是小虚竹。2022年度博客之星评选TOP 10🏆,Java领域优质创作者🏆,CSDN博客专家🏆,华为云享专家🏆,掘金年度人气作…

[C++] STL_priority_queue(优先级队列) 的使用及底层的模拟实现,容器适配器,deque的原理介绍

文章目录 1、priority_queue1.1 priority_queue的介绍和使用1.2 priority_queue的使用模拟实现: 2、容器适配器2.1 什么是适配器2.2 STL标准库中stack和queue的底层结构 3、deque3.1 deque的原理介绍3.2 deque的缺陷 4、为什么选择deque作为stack和queue的底层默认容…

[陇剑杯 2021]日志分析

[陇剑杯 2021]日志分析 题目做法及思路解析(个人分享) 问一:单位某应用程序被攻击,请分析日志,进行作答: 网络存在源码泄漏,源码文件名是_____________。(请提交带有文件后缀的文件名&…

高级系统架构设计师之路

前言:系 统 架 构 设 计 师 (System Architecture Designer)是项目开发活动中的众多角色之 一 ,它可 以是 一个人或 一个小组,也可以是一个团队。架构师 (Architect) 包含建筑师、设计师、创造 者、缔造者等含义,可以说&#xff0…

年入百万的知识付费网站如何搭建:如何以低成本实现高转化?

我有才知识付费平台 一、引言 随着知识经济的崛起,越来越多的知识提供者希望搭建自己的知识付费平台。然而,对于新手来说,如何以低成本、高效率地实现这一目标,同时满足自身需求并提高客户转化率,是一大挑战。本文将…

管理空闲存储空间

位示图是操作系统中一种管理空闲存储空间的方法。管理空闲除使用位示图法还可用:空闲区表法,空闲链表法,成组链接法 1.空闲区表法 空闲表法属于连续分配方法。它与内存管理中的动态分区分配方法雷同。 将外存空间上一个连续未分配区域称为“…

[MySQL] SQL优化之性能分析

🌈键盘敲烂,年薪30万🌈 目录 一、索引优化 1、索引是什么: 2、索引的数据结构: 3、索引种类: 4、sql分析(回表查询) 二、定位慢查询语句 1、慢查询日志 2、profile详情 3、…

四十三、Redis基础

目录 一、认识NoSql 1、定义: 2、常见语法 3、与关系型数据库(SQL)的区别: 二、认识Redis 1、定义: 2、特征: 3、Key的结构: 三、安装Redis 四、Redis常见命令 1、数据结构介绍 2、…

Mysql dumpling 导入导出sql文件

一:导出命令 mysqldump -u root -p saishi > saishi.sql mysqldump -u root -p saishi > saishi.sql root是用户名 saishi是数据库名 saishi.sql导出文件名 二:选择导入的数据库 cd到安装mysql的文件下(找不到可以用:wh…