3-知识补充-HTTP协议

news2024/12/23 18:37:38

3-知识补充-HTTP协议

文章目录

  • 3-知识补充-HTTP协议
  • HTTP协议基础
    • 什么是HTTP?
    • HTTP协议的会话方式
    • HTTP1.0和HTTP1.1的区别
  • 请求和响应报文
    • 报文的格式
    • 报文解析实例-请求百度官网
      • 请求报文-GET请求
      • 请求报文-POST请求-学习用-非请求百度官网
      • 响应报文
  • 响应状态码
    • 有代表性的响应状态码
    • 更多的响应状态码

HTTP协议基础

什么是HTTP?

image-20231101091032758

HTTP 超文本传输协议 (HTTP-Hyper Text transfer protocol),是一个属于应用层的面向对象的协议,由于其简捷、快速的方式,适用于分布式超媒体信息系统。它于1990年提出,经过十几年的使用与发展,得到不断地完善和扩展。它是一种详细规定了浏览器和万维网服务器之间互相通信的规则,通过因特网传送万维网文档的数据传送协议。客户端与服务端通信时传输的内容我们称之为报文HTTP协议就是规定报文的格式。HTTP就是一个通信规则,这个规则规定了客户端发送给服务器的报文格式,也规定了服务器发送给客户端的报文格式。实际我们要学习的就是这两种报文。客户端发送给服务器的称为"请求报文",服务器发送给客户端的称为"响应报文"

HTTP协议的会话方式

  • 浏览器与服务器之间的通信过程要经历四个步骤:

  • 浏览器与WEB服务器的连接过程是短暂的,每次连接只处理一个请求和响应。对每一个页面的访问,浏览器与WEB服务器都要建立一次单独的连接。
  • 浏览器到WEB服务器之间的所有通讯都是完全独立分开的请求和响应对。

HTTP1.0和HTTP1.1的区别

  • HTTP1.0版本中,浏览器请求一个带有图片的网页,会由于下载图片而与服务器之间开启一个新的连接,即每个连接都是短连接
  • 在HTTP1.1版本中,允许浏览器在拿到当前请求对应的全部资源后再断开连接,提高了效率,即支持长连接

image-20231101092400988

  • 当下应用最广泛的HTTP版本,还是HTTP1.1

请求和响应报文

报文的格式

整体组成细分组成-请求报文细分组成-响应报文
报文首部请求行响应行
请求体(请求首部字段、通用首部字段、实体首部字段、其他)响应体(响应首部字段、通用首部字段、实体首部字段)
其他其他
空行(CR+LF)
报文主体

image-20231101094825587

报文解析实例-请求百度官网

请求报文-GET请求

客户端发送给服务端的报文

原始

GET / HTTP/1.1
Host: www.baidu.com
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:109.0) Gecko/20100101 Firefox/119.0
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,*/*;q=0.8
Accept-Language: zh-CN,zh;q=0.8,zh-TW;q=0.7,zh-HK;q=0.5,en-US;q=0.3,en;q=0.2
Accept-Encoding: gzip, deflate, br
Connection: keep-alive
Cookie: BAIDUID=E547C9FD5BA39A532836EA39C72269E7:FG=1; BIDUPSID=E547C9FD5BA39A53BCC466D017AAE936; PSTM=1682137733; BDUSS=BTcEJUSU01czY2RGtRcXZpTlE2WklxOVVkSkpBdldmWDlrUm10cUJMNDJVVXRsRVFBQUFBJCQAAAAAAAAAAAEAAAA7vpnkuqPD5sfgxOoAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADbEI2U2xCNlVX; ZFY=wy8domKcULfRypD8LQe1p47Vqhj7JY1O7oSUIzppwvI:C; COOKIE_SESSION=152902_2_6_6_8_8_1_0_5_3_0_4_152901_1616_5_0_1685672471_1685446700_1685672466%7C9%231618_6_1685446695%7C4; __bid_n=187a73adaee86322304207; FPTOKEN=+382R3H/SngSoMLUj5ZlN3Mv8crD7/ToHdl4w7tweGoGWNOFqbV6SdLpcjSRgPKl6rKrtKasV0dbufhyuOeB+QW7ahG8QEXFrh0XQInJPNGBAbDAHNi1oSCj5aDS9LrZdUChuHHkZqbn4ZHwph/lSbYOEiKPcAUA0fxxfcGdt2EF23MDGcEdtWB+uZEm9N5V/+8HJdDhlMaC/VfDDJnfvskNNikr0gIgAiFgaxSn0v0lI59EGRWi6V3VHk6GAHlOGIuJjfBj9AD5LR+15mtK91VLbXCpobGmTvSD7x4BcB3CODogORAMR29jcbXE3By+JHnsfOLNOeatUmg4yjR4JbsjiwPkmOV+TVNWeBaW7AySqOCkfbBKwguoNdGbraNR56B5L1JolS3c4kkifzZMfw==|KqXDJcj+ZHu2MhqDlKwYjwCKXlNV5xRFVQ20CWKkzmA=|10|87efce1e55907ab7f7c5b6ca1a1f95bb; BAIDU_WISE_UID=wapp_1686639223063_47; MCITY=-198%3A131%3A; BD_LAST_QID=13742169835500460478
Upgrade-Insecure-Requests: 1
Sec-Fetch-Dest: document
Sec-Fetch-Mode: navigate
Sec-Fetch-Site: none
Sec-Fetch-User: ?1

解析

  • 请求行:请求方式 / HTTP版本号
GET / HTTP/1.1
  • 请求头
- 主机虚拟地址
Host: www.baidu.com
- 用户系统信息
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:109.0) Gecko/20100101 Firefox/119.0
- 浏览器支持的文件类型
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,*/*;q=0.8
- 浏览器支持的语言
Accept-Language: zh-CN,zh;q=0.8,zh-TW;q=0.7,zh-HK;q=0.5,en-US;q=0.3,en;q=0.2
- 浏览器支持的压缩格式
Accept-Encoding: gzip, deflate, br
- 连接方式:长连接
Connection: keep-alive
- Cookie信息
Cookie: BAIDUID=E547C9FD5BA39A532836EA39C72269E7:FG=1; BIDUPSID=E547C9FD5BA39A53BCC466D017AAE936; PSTM=1682137733; BDUSS=BTcEJUSU01czY2RGtRcXZpTlE2WklxOVVkSkpBdldmWDlrUm10cUJMNDJVVXRsRVFBQUFBJCQAAAAAAAAAAAEAAAA7vpnkuqPD5sfgxOoAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADbEI2U2xCNlVX; ZFY=wy8domKcULfRypD8LQe1p47Vqhj7JY1O7oSUIzppwvI:C; COOKIE_SESSION=152902_2_6_6_8_8_1_0_5_3_0_4_152901_1616_5_0_1685672471_1685446700_1685672466%7C9%231618_6_1685446695%7C4; __bid_n=187a73adaee86322304207; FPTOKEN=+382R3H/SngSoMLUj5ZlN3Mv8crD7/ToHdl4w7tweGoGWNOFqbV6SdLpcjSRgPKl6rKrtKasV0dbufhyuOeB+QW7ahG8QEXFrh0XQInJPNGBAbDAHNi1oSCj5aDS9LrZdUChuHHkZqbn4ZHwph/lSbYOEiKPcAUA0fxxfcGdt2EF23MDGcEdtWB+uZEm9N5V/+8HJdDhlMaC/VfDDJnfvskNNikr0gIgAiFgaxSn0v0lI59EGRWi6V3VHk6GAHlOGIuJjfBj9AD5LR+15mtK91VLbXCpobGmTvSD7x4BcB3CODogORAMR29jcbXE3By+JHnsfOLNOeatUmg4yjR4JbsjiwPkmOV+TVNWeBaW7AySqOCkfbBKwguoNdGbraNR56B5L1JolS3c4kkifzZMfw==|KqXDJcj+ZHu2MhqDlKwYjwCKXlNV5xRFVQ20CWKkzmA=|10|87efce1e55907ab7f7c5b6ca1a1f95bb; BAIDU_WISE_UID=wapp_1686639223063_47; MCITY=-198%3A131%3A; BD_LAST_QID=13742169835500460478
Upgrade-Insecure-Requests: 1
Sec-Fetch-Dest: document
Sec-Fetch-Mode: navigate
Sec-Fetch-Site: none
Sec-Fetch-User: ?1
  • 请求空行
  • 请求体
    • GET请求数据不放请求体,请求都在连接里面体现

请求报文-POST请求-学习用-非请求百度官网

客户端发送给服务端的报文

解析

  • 请求行:请求方式 / HTTP版本号
POST /05_web_tomcat/login_success.html HTTP/1.1
  • 请求头
Host: localhost:8080
Connection: keep-alive
-请求体内容的长度
Content-Length: 31     
-无缓存
Cache-Control: max-age=0  
Origin: http://localhost:8080
-协议的自动升级
Upgrade-Insecure-Requests: 1  
-请求体内容类型[服务器根据类型解析请求体参数]
Content-Type: application/x-www-form-urlencoded   
User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/68.0.3440.75 Safari/537.36
Accept:text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8
Referer: http://localhost:8080/05_web_tomcat/login.html
Accept-Encoding: gzip, deflate, br
Accept-Language: zh-CN,zh;q=0.9,en-US;q=0.8,en;q=0.7
Cookie:JSESSIONID-
  • 请求空行
  • 请求体:浏览器提交给服务器的数据
username=admin&password=1232131

响应报文

服务端发送给客户端的报文

原始

HTTP/1.1 200 OK
Connection: keep-alive
Content-Encoding: gzip
Content-Security-Policy: frame-ancestors 'self' https://chat.baidu.com http://mirror-chat.baidu.com https://fj-chat.baidu.com https://hba-chat.baidu.com https://hbe-chat.baidu.com https://njjs-chat.baidu.com https://nj-chat.baidu.com https://hna-chat.baidu.com https://hnb-chat.baidu.com http://debug.baidu-int.com;
Content-Type: text/html; charset=utf-8
Date: Wed, 01 Nov 2023 01:50:05 GMT
Isprivate: 1
Server: BWS/1.1
Traceid: 1698803405020669338615241818633959571691
X-Ua-Compatible: IE=Edge,chrome=1
Transfer-Encoding: chunked

解析

  • 响应行:响应协议为HTTP1.1,响应状态码为200,表示请求成功;
HTTP/1.1 200 OK
  • 响应头
- 连接方式:长连接
Connection: keep-alive
Content-Encoding: gzip
Content-Security-Policy: frame-ancestors 'self' https://chat.baidu.com http://mirror-chat.baidu.com https://fj-chat.baidu.com https://hba-chat.baidu.com https://hbe-chat.baidu.com https://njjs-chat.baidu.com https://nj-chat.baidu.com https://hna-chat.baidu.com https://hnb-chat.baidu.com http://debug.baidu-int.com;
- 响应体数据的类型
Content-Type: text/html; charset=utf-8
- 响应体内容的字节数。作为理解用,本次响应没有该行
Content-Length: 157
- 响应时间
Date: Wed, 01 Nov 2023 01:50:05 GMT
Isprivate: 1
- 服务器的版本信息
Server: BWS/1.1
Traceid: 1698803405020669338615241818633959571691
X-Ua-Compatible: IE=Edge,chrome=1
Transfer-Encoding: chunked
  • 空行
  • 响应体
    • 响应体是HTML文件(很长)
    • 下图是HTML文件对应的预览图

image-20231101110411596

响应状态码

响应码对浏览器来说很重要,它告诉浏览器响应的结果

有代表性的响应状态码

状态码内容
200请求成功,浏览器会把响应体内容(通常是html)显示在浏览器中
302重定向,当响应码为302时,表示服务器要求浏览器重新再发一个请求,服务器会发送一个响应头Location指定新请求的URL地址
304使用了本地缓存
404请求的资源没有找到,说明客户端错误的请求了不存在的资源
405请求的方式不允许
500请求资源找到了,但服务器内部出现了错误

更多的响应状态码

状态码状态码英文描述中文含义
1**
100Continue继续。客户端应继续其请求
101Switching Protocols切换协议。服务器根据客户端的请求切换协议。只能切换到更高级的协议,例如,切换到HTTP的新版本协议
2**
200OK请求成功。一般用于GET与POST请求
201Created已创建。成功请求并创建了新的资源
202Accepted已接受。已经接受请求,但未处理完成
203Non-Authoritative Information非授权信息。请求成功。但返回的meta信息不在原始的服务器,而是一个副本
204No Content无内容。服务器成功处理,但未返回内容。在未更新网页的情况下,可确保浏览器继续显示当前文档
205Reset Content重置内容。服务器处理成功,用户终端(例如:浏览器)应重置文档视图。可通过此返回码清除浏览器的表单域
206Partial Content部分内容。服务器成功处理了部分GET请求
3**
300Multiple Choices多种选择。请求的资源可包括多个位置,相应可返回一个资源特征与地址的列表用于用户终端(例如:浏览器)选择
301Moved Permanently永久移动。请求的资源已被永久的移动到新URI,返回信息会包括新的URI,浏览器会自动定向到新URI。今后任何新的请求都应使用新的URI代替
302Found临时移动。与301类似。但资源只是临时被移动。客户端应继续使用原有URI
303See Other查看其它地址。与301类似。使用GET和POST请求查看
304Not Modified未修改。所请求的资源未修改,服务器返回此状态码时,不会返回任何资源。客户端通常会缓存访问过的资源,通过提供一个头信息指出客户端希望只返回在指定日期之后修改的资源
305Use Proxy使用代理。所请求的资源必须通过代理访问
306Unused已经被废弃的HTTP状态码
307Temporary Redirect临时重定向。与302类似。使用GET请求重定向
4**
400Bad Request客户端请求的语法错误,服务器无法理解
401Unauthorized请求要求用户的身份认证
402Payment Required保留,将来使用
403Forbidden服务器理解请求客户端的请求,但是拒绝执行此请求
404Not Found服务器无法根据客户端的请求找到资源(网页)。通过此代码,网站设计人员可设置"您所请求的资源无法找到"的个性页面
405Method Not Allowed客户端请求中的方法被禁止
406Not Acceptable服务器无法根据客户端请求的内容特性完成请求
407Proxy Authentication Required请求要求代理的身份认证,与401类似,但请求者应当使用代理进行授权
408Request Time-out服务器等待客户端发送的请求时间过长,超时
409Conflict服务器完成客户端的 PUT 请求时可能返回此代码,服务器处理请求时发生了冲突
410Gone客户端请求的资源已经不存在。410不同于404,如果资源以前有现在被永久删除了可使用410代码,网站设计人员可通过301代码指定资源的新位置
411Length Required服务器无法处理客户端发送的不带Content-Length的请求信息
412Precondition Failed客户端请求信息的先决条件错误
413Request Entity Too Large由于请求的实体过大,服务器无法处理,因此拒绝请求。为防止客户端的连续请求,服务器可能会关闭连接。如果只是服务器暂时无法处理,则会包含一个Retry-After的响应信息
414Request-URI Too Large请求的URI过长(URI通常为网址),服务器无法处理
415Unsupported Media Type服务器无法处理请求附带的媒体格式
416Requested range not satisfiable客户端请求的范围无效
417Expectation Failed服务器无法满足Expect的请求头信息
5**
500Internal Server Error服务器内部错误,无法完成请求
501Not Implemented服务器不支持请求的功能,无法完成请求
502Bad Gateway作为网关或者代理工作的服务器尝试执行请求时,从远程服务器接收到了一个无效的响应
503Service Unavailable由于超载或系统维护,服务器暂时的无法处理客户端的请求。延时的长度可包含在服务器的Retry-After头信息中
504Gateway Time-out充当网关或代理的服务器,未及时从远端服务器获取请求
505HTTP Version not supported服务器不支持请求的HTTP协议的版本,无法完成处理

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

第八章认识Express框架

目录 Express模块化路由 基本概述 基本使用 基本构建 案例项目 Express接收请求参数 基本概述 基本类别 Express接收GET请求参数 Express接收POST请求参数 Express接收路由参数 Express模块化路由 基本概述 在Express中,路由是指确定应用程序如何响应对…

功率放大器的工作原理及选购技巧

功率放大器是电子设备中非常重要的组成部分之一,它的主要功能是将输入信号的功率进行放大,以驱动高功率负载。在各种应用领域中,如音频放大器、无线电频率放大器、射频功率放大器等,功率放大器都发挥着非常重要的作用。下面将介绍…

Kubernetes二进制搭建

目录 一、K8S的架构 二、K8S创建Pod资源的工作流程 三、K8S资源对象和资源配置信息 K8S资源对象 K8S资源配置信息 四、K8S的的三种网络和三种接口 三种网络: 三种节点: 五、etcd 集群 etcd 的特点: 六、flannel flannel方案 K8S …

指令手册术语缩写

指令手册术语缩写 1 指令汇总表中的操作码列(不带VEX前缀的指令)2 指令汇总表中的操作码列(带有VEX前缀的指令)3 操作码汇总表中的指令列 本文属于《 X86指令基础系列教程》之一,欢迎查看其它文章。 1 指令汇总表中的操作码列(不带VEX前缀的指令) 2 指令汇总表中的…

阿里云安全恶意程序检测(速通三)

阿里云安全恶意程序检测 特征工程进阶与方案优化pivot特征构建pivot特征pivot特征构建时间pivot特征构建细节特点 业务理解和结果分析结合模型理解业务多分类问题预测结果分析 特征工程进阶基于LightGBM模型验证模型结果分析模型测试 优化技巧与解决方案升级内存管理控制加速数…

【配置】如何在打包Spring Boot项目时按需使用日常、测试、预发、正式环境的配置文件

文章目录 前言1. 创建5个配置文件2. 在pom.xml文件中如下配置3. 在application.properties中加入环境变量 前言 在我们开发项目的时候,一般有四套环境:日常、测试、预发、正式。日常环境作为我们开发环境;测试环境给测试同学测试功能&#x…

基于厨师算法的无人机航迹规划-附代码

基于厨师算法的无人机航迹规划 文章目录 基于厨师算法的无人机航迹规划1.厨师搜索算法2.无人机飞行环境建模3.无人机航迹规划建模4.实验结果4.1地图创建4.2 航迹规划 5.参考文献6.Matlab代码 摘要:本文主要介绍利用厨师算法来优化无人机航迹规划。 1.厨师搜索算法 …

Canal同步Mysql数据到ES以及Springboot项目查询ES数据

1、环境准备 服务器:Centos7 Jdk版本:1.8 Mysql版本:5.7.44 Canal版本:1.17 Es版本:7.12.1 kibana版本:7.12.1 软件包下载地址:链接:https://pan.baidu.com/s/1jRpCJP0-hr9aI…

C++进阶篇4---番外-AVL树

一、AVL树的概念 二叉搜索树虽可以缩短查找的效率,但如果数据有序或接近有序二叉搜索树将退化为单支树,查 找元素相当于在顺序表中搜索元素,效率低下。因此,两位俄罗斯的数学家G.M.Adelson-Velskii 和E.M.Landis在1962年发明了一…

Microsoft Dynamics 365 CE 扩展定制 - 8. DevOps

在本章中,我们将介绍以下内容: 使用PowerShell导出Dynamics 365解决方案使用PowerShell部署解决方案构建解决方案层次结构修补解决方案暂存解决方案使用SolutionPackager在源代码管理中保存解决方案使用PackageDeployer将您的解决方案与配置数据打包基于解决方案版本增量触发…

缓存-基础理论和Guava Cache介绍

缓存-基础理论和Guava Cache介绍 缓存基础理论 缓存的容量和扩容 缓存初始容量、最大容量,扩容阈值以及相应的扩容实现。 缓存分类 本地缓存:运行于本进程中的缓存, 如Java的 concurrentHashMap, Ehcache,Guava Cache。 分布式缓…

3.Netty中Channel通道概述

Selector 模型 Java NIO 是基于 Selector 模型来实现非阻塞的 I/O。Netty 底层是基于 Java NIO 实现的,因此也使用了 Selector 模型。 Selector 模型解决了传统的阻塞 I/O 编程一个客户端一个线程的问题。Selector 提供了一种机制,用于监视一个或多个 …

如何成为C++大神?五个技巧助你提升编程水平

一名优秀的C程序员是如何炼成的?这个问题一直困扰着许多人,尤其是那些刚刚踏入编程的世界的新手。C作为一门强大而复杂的编程语言,的确需要一些特殊的技巧和策略才能掌握。但幸运的是,成为一名出色的C程序员并不是不可能的任务。在…

【算法练习Day41】买卖股票的最佳时机买卖股票的最佳时机 II

​📝个人主页:Sherry的成长之路 🏠学习社区:Sherry的成长之路(个人社区) 📖专栏链接:练题 🎯长路漫漫浩浩,万事皆有期待 文章目录 买卖股票的最佳时机买卖股票…

办公神器!2024年值得拥有的10款在线画板软件!

随着科技的进步和互联网的普及,我们工作、学习和生活方式发生了翻天覆地的变化。在线画板软件就是在这个背景下应运而生的一种便捷工具。它不仅满足了我们随时随地绘制图像、演示思路的需求,还提供了协同编辑、云存储等功能,使得团队协作变得…

Java面试题(高频、有答案,全网最强)

原文网址:Java面试题(高频、有答案,全网最强)-CSDN博客 这是一套全网最强的Java面试题,吊打网上所有Java面试题。 此套面试题的威力:看过这套题的朋友、同事、粉丝参加了面试后说,他们面试被问…

基于C#的GRPC

GRPC gRPC(gRPC Remote Procedure Call)是由Google开发的高性能、跨语言的远程过程调用框架。它基于HTTP/2协议进行通信,支持多种编程语言,包括C, C#, Java, Python等,使不同语言的应用程序可以通过远程调用相互通信。…

SPASS教程-入门

常用的统计工具 EXCEL 严格说来并不是统计软件,但作为数据表格软件,有一定统计计算功能。对于简单分析,Excel还算方便,但随着问题的深入,Excel就不那么“傻瓜”,需要使用函数,甚至根本没有相应…

​软考-高级-信息系统项目管理师教程 第四版【第19章-配置与变更管理-思维导图】​

软考-高级-信息系统项目管理师教程 第四版【第19章-配置与变更管理-思维导图】 课本里章节里所有蓝色字体的思维导图

Spire.Office for Java 8.10.2 同步更新Crk

Spire.Office for Java 是 E-iceblue 提供的企业级 Office Java API 的组合。它包括Spire.Doc for Java、Spire.XLS for Java、Spire.Presentation for Java、Spire.PDF for Java和Spire.Barcode for Java。 开发人员可以使用Spire.Office for Java在Java应用程序中执行各种办…