HTTP协议的请求协议和响应协议的组成,HTTP常见的状态信息

news2024/9/23 19:19:57

HTTP协议

什么是协议

协议实际上是某些人或组织提前制定好的一套规范,大家只要都按照这个规范来就可以做到沟通无障碍

HTTP协议是W3C(万维网联盟组织)制定的一种超文本传输通信协议(发送消息的模板和数据的格式),除了传送字符串,还有声音、视频、图片等流媒体等超文本信息

Http协议游走在浏览器和服务器之间,浏览器和服务器在请求 (request) 或响应 (response) 数据的期间都要遵循HTTP协议,这样二者才能解耦合即不互相依赖

HTTP的请求协议及组成

使用浏览器,右击-->检查或直接按F12,找到network网络面板,通过这个面板查看浏览器发起的请求,ALL表示所有请求,XHR表示Ajax请求

在这里插入图片描述

HTTP请求协议GET请求的请求报文

GET /servlet05/getServlet?username=lucy&userpwd=1111 HTTP/1.1                           #请求行
Host: localhost:8080                                                                    #请求头
Connection: keep-alive
sec-ch-ua: "Google Chrome";v="95", "Chromium";v="95", ";Not A Brand";v="99"
sec-ch-ua-mobile: ?0
sec-ch-ua-platform: "Windows"
Upgrade-Insecure-Requests: 1
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/95.0.4638.54 Safari/537.36
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.9
Sec-Fetch-Site: same-origin
Sec-Fetch-Mode: navigate
Sec-Fetch-User: ?1
Sec-Fetch-Dest: document
# 具体的来源页面,如执行操作后回到当前页面
Referer: http://localhost:8080/servlet05/index.html
Accept-Encoding: gzip, deflate, br
Accept-Language: zh-CN,zh;q=0.9
                                                                                        #空白行
                                                                                        #请求体(在Query String parameters里面)

HTTP请求协议的POST请求的具体报文

POST /servlet05/postServlet HTTP/1.1                                                  #请求行
Host: localhost:8080                                                                  #请求头
Connection: keep-alive
Content-Length: 25
Cache-Control: max-age=0
sec-ch-ua: "Google Chrome";v="95", "Chromium";v="95", ";Not A Brand";v="99"
sec-ch-ua-mobile: ?0
sec-ch-ua-platform: "Windows"
Upgrade-Insecure-Requests: 1
Origin: http://localhost:8080
# 请求参数的内容类型,application/x-www-form-urlencoded表示表单传参
Content-Type: application/x-www-form-urlencoded
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/95.0.4638.54 Safari/537.36
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.9
Sec-Fetch-Site: same-origin
Sec-Fetch-Mode: navigate
Sec-Fetch-User: ?1
Sec-Fetch-Dest: document
Referer: http://localhost:8080/servlet05/index.html
Accept-Encoding: gzip, deflate, br
Accept-Language: zh-CN,zh;q=0.9
                                                                                      #空白行
username=lisi&userpwd=123                                          					  #请求体(在Form Date选项里面)

请求行如POST /servlet05/postServlet HTTP/1.1包括请求方式,URI,HTTP协议版本号三部分

组成描述
请求方式GET, POST, DELETE , PUT , HEAD , OPTIONS , TRACE
URIURI是统一资源标识符,代表网络中某个资源的名字,通过URI是无法定位资源的
URL是统一资源定位符,代表网络中某个具体的资源,通过URL是可以定位到资源,如http://localhost:8080/servlet05/index.html
HTTP协议版本号描述当前HTTP协议的版本

请求头包含很多属性,如请求的主机和端口(Host) ,浏览器信息,cookie等信息

空白行: 空白行是用来区分请求头请求体

浏览器向服务器发送的具体数据,可以是键值对格式或者JSON格式的数据**

请求体: 浏览器发送到服务器的请求参数有name=value&...(键值对){"key":value,...}(json对象)两种格式

  • URL请求会将请求参数以键值对的格式拼接到请求地址后面,form表单的GET和POST请求会将请求参数以键值对的格式存储到请求报文的请求体中
  • 发起Ajax请求时,可以将请求参数以Json的格式存储到请求报文的请求体中

HTTP响应协议及组成

HTTP响应协议的具体报文

在这里插入图片描述

HTTP/1.1 200	ok(状态的描述信息)	 			       状态行
Server: nginx
Date: Mon, 09 Oct 2023 00:37:57 GMT
#Content-Type: application/json						响应头
Content-Type: text/html;charset=UTF-8    
Transfer-Encoding: chunked
Keep-Alive: timeout=20
Connection: keep-alive
Set-Cookie: JSESSIONID=6E8E893C9662C7A90DDF97FF61856F99; Path=/; HttpOnly

													空白行

<!doctype html>                                     响应体(在Response选项里面)
<html>
    <head>
        <title>from get servlet</title>
    </head>
    <body>
        <h1>from get servlet</h1>
    </body>
</html>

状态行如HTTP/1.1 200 ok由协议版本号,状态码,状态的描述信息三部分组成

  • 状态码: 不同的响应结果对应不同的响应状态码,以4开始的一般是浏览器端的错误导致的 , 以5开始的一般是服务器端的错误导致的
  • 状态描述信息: ok 表示正常成功结束,not found表示资源找不到

响应头包含很多属性,如响应体的内容类型,响应体的内容长度,响应的时间…

空白行: 用来分隔响应头和响应体的

响应体: 响应体就是服务器响应到浏览器的具体数据,响应内容可以是JSON格式或HTMl等字符串,这些字符串被浏览器渲染解释并执行,最终展示出效果

HTTP状态信息

1xx: 信息

消息:描述:
100 Continue服务器仅接收到部分请求,但是一旦服务器并没有拒绝该请求,客户端应该继续发送其余的请求
101 Switching Protocols服务器转换协议:服务器将遵从客户的请求转换到另外一种协议

2xx: 成功

消息:描述:
200 OK请求响应成功正常结束,其后是对GET和POST请求的应答文档
201 Created请求被创建完成,同时新的资源被创建
202 Accepted供处理的请求已被接受,但是处理未完成
203 Non-authoritative Information文档已经正常地返回,但一些应答头可能不正确,因为使用的是文档的拷贝
204 No Content没有新文档,浏览器应该继续显示原来的文档,如果用户定期地刷新页面,而Servlet可以确定用户文档足够新,这个状态代码是很有用的
205 Reset Content没有新文档,但浏览器应该重置它所显示的内容,用来强制浏览器清除表单输入内容
206 Partial Content客户发送了一个带有Range头的GET请求,服务器完成了它

3xx: 重定向

消息:描述:
300 Multiple Choices多重选择,链接列表,用户可以选择某链接到达目的地,最多允许五个地址
301 Moved Permanently所请求的页面已经转移至新的url
302 Found所请求的页面已经临时转移至新的url
303 See Other所请求的页面可在别的url下被找到
304 Not Modified未按预期修改文档。客户端有缓冲的文档并发出了一个条件性的请求(一般是提供If-Modified-Since头表示客户只想比指定日期更新的文档)。服务器告诉客户,原来缓冲的文档还可以继续使用
305 Use Proxy客户请求的文档应该通过Location头所指明的代理服务器提取
306 Unused此代码被用于前一版本。目前已不再使用,但是代码依然被保留
307 Temporary Redirect被请求的页面已经临时移至新的url

4xx: 客户端错误

消息:描述:
400 Bad Request服务器未能理解请求
401 Unauthorized被请求的页面需要用户名和密码
402 Payment Required此代码尚无法使用
403 Forbidden对被请求页面的访问被禁止
404 Not Found表示访问的资源不存在,服务器无法找到被请求的页面
通常是因为路径写错了或服务器中对应的资源并没有启动成功
405 Method Not Allowed请求中指定的方法不被允许,前端发送的请求方式与后端请求的处理方式不一致时发生的错误
406 Not Acceptable服务器生成的响应无法被客户端所接受
407 Proxy Authentication Required用户必须首先使用代理服务器进行验证,这样请求才会被处理
408 Request Timeout请求超出了服务器的等待时间
409 Conflict由于冲突,请求无法被完成
410 Gone被请求的页面不可用
411 Length Required“Content-Length” 未被定义。如果无此内容,服务器不会接受请求
412 Precondition Failed请求中的前提条件被服务器评估为失败
413 Request Entity Too Large由于所请求的实体的太大,服务器不会接受请求
414 Request-url Too Long由于url太长,服务器不会接受请求。当post请求被转换为带有很长的查询信息的get请求时,就会发生这种情况
415 Unsupported Media Type由于媒介类型不被支持,服务器不会接受请求
416服务器不能满足客户在请求中指定的Range头
417 Expectation Failed

5xx: 服务器错误

消息:描述:
500 Internal Server Error请求未完成,服务器端的程序出现了异常,一般会认为是服务器端的错误导致的
501 Not Implemented请求未完成,服务器不支持所请求的功能
502 Bad Gateway请求未完成,服务器从上游服务器收到一个无效的响应
503 Service Unavailable请求未完成,服务器临时过载或当机
504 Gateway Timeout网关超时
505 HTTP Version Not Supported服务器不支持请求中指明的HTTP协议版本

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

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

相关文章

单目3D目标检测——SMOKE 模型推理 | 可视化结果

本文分享SMOKE的模型推理&#xff0c;和可视化结果。以kitti数据集为例子&#xff0c;对训练完的模型进行推理&#xff0c;并可视化3D框的结果&#xff0c;画到图像中。 关于模型原理、搭建开发环境、模型训练&#xff0c;可以参考之前的博客&#xff1a; 【论文解读】SMOKE …

【分享】Word文档“只读方式”的两种模式

如果想要防止Word文档的内容被意外更改&#xff0c;可以设置成以“只读方式”打开&#xff0c;这样就算更改了也不用担心不小心保存了文档。 Word文档“只读方式”有两种模式&#xff0c;下面我们来看看这两种模式具体是如何设置的。 模式一&#xff1a;无密码的“只读方式” …

基于YOLOv5、YOLOv8的火灾检测(超实用项目)

目录 1.简介 2.YOLO算法 3.基于YOLOv5、YOLOv8的火灾检测 视频已上传b站 YOLOv5/YOLOv8的火灾检测&#xff08;超实用项目&#xff09;_哔哩哔哩_bilibili 本文为系列专栏&#xff0c;包括各种YOLO检测算法项目、追踪算法项目、双目视觉、深度结构光相机测距测速三维测量项…

基于黏菌优化的BP神经网络(分类应用) - 附代码

基于黏菌优化的BP神经网络&#xff08;分类应用&#xff09; - 附代码 文章目录 基于黏菌优化的BP神经网络&#xff08;分类应用&#xff09; - 附代码1.鸢尾花iris数据介绍2.数据集整理3.黏菌优化BP神经网络3.1 BP神经网络参数设置3.2 黏菌算法应用 4.测试结果&#xff1a;5.M…

教你如何『SSH』远程连接『内网』服务器

前言 最近博主实验室要搬家&#xff0c;因为服务器只有连接内网才能使用&#xff0c;所以搬走之后就无法在公网连接使用服务器&#xff0c;确实是让人非常苦恼&#xff0c;所以本文将会主要讲解如何使用公网服务器 SSH 连接内网服务器 系统配置 内网服务器&#xff1a;Ubuntu …

【配置vscode编写Java代码和输出在外部控制台】

配置vscode编写Java代码和输出在外部控制台 打开vscode&#xff0c;扩展中搜索java安装如下插件&#xff0c; 安装完成后&#xff0c;打开一个文件夹&#xff0c;新建hello.java文件&#xff0c;粘贴下面代码 public class hello {public static void main(String[] args) {S…

【Python】win安装

目录标题 下载目录安装步骤验证是否安装成功linux 、MacOs 安装 下载目录 https://www.python.org/downloads/ 安装步骤 验证是否安装成功 进入命令行&#xff0c;输入 &#xff1a; python 出现版本号即查看成功&#xff1a; linux 、MacOs 安装 Python 安装到 Linux 上…

小黑子—MyBatis:第三章

MyBatis入门3.0 七 小黑子使用javassist生成类7.1 Javassist的使用7.2 javassist生成动态类并实现接口7.3 工具类GenerateDaoProxy的编写7.3.1 每一个方法体的动态拼接7.3.2 MyBatis的getMapper方法 八 MyBatis中接口代理机制及使用8.1 面向接口的方式进行CRUD8.1.1 步骤18.1.2…

idea将jar包deploy到本地仓库

1、pom.xml文件引入配置&#xff0c;如下参考&#xff1a; <distributionManagement><snapshotRepository><id>maven-snapshots</id><url>http://nexus1.coralglobal.cn/repository/maven-snapshots/</url></snapshotRepository><…

2023全网最火的接口自动化框架对比 (建议收藏)

一、前言 自动化测试是把将手工驱动的测试行为转化为机器自动执行&#xff0c;通常操作是在某一框架下进行代码编写&#xff0c;实现用例自动发现与执行&#xff0c;托管在 CI/CD 平台上&#xff0c;通过条件触发或手工触发&#xff0c;进行回归测试&线上监控&#xff0c;…

四川竹哲电子商务有限公司抖音培训的靠谱选择

在今天的数字时代&#xff0c;抖音已经成为企业和个人必备的营销工具。然而&#xff0c;如何充分利用抖音的潜力&#xff0c;实现最大的营销效果&#xff0c;却让许多人感到困惑。四川竹哲电子商务有限公司正是为了解决这一问题而存在的。作为一家专业的抖音培训公司&#xff0…

Windows 7或10 - 删除进程方法,解决端口占用问题 - taskkill 命令删除进程

目录 一、正常删除进程Windows 命令 —— netstat&#xff1a; 二、taskkill 命令删除进程参考链接 一、正常删除进程 Windows 命令 —— netstat&#xff1a; 查看 8080 端口占用的进程 PID 号 netstat -ano|findstr "8080"类似如下&#xff1a;&#xff08;笔者…

溯源图构建工具SPADE的使用历程

溯源图构建工具SPADE的使用历程 一、我的环境二、SPADE下载安装过程1.下载SPADE2.编译SPADE3.安装SPADE4.启动SPADE 三、遇到的问题 一、我的环境 虚拟机&#xff1a;Virtual Box 6.1 OS&#xff1a;Kali 二、SPADE下载安装过程 SPADE网址&#xff1a;https://github.com/as…

MyBatisPlus属性自动填充和乐观锁插件+查询删除操作

属性字段自动填充 一、实体类和数据表添加两个字段&#xff08;属性&#xff09; 表&#xff1a;create_tiem/update_time 实体类&#xff1a;createTime/updateTime 二、实体类中属性进行注解添加 TableField(fillFieldFill.INSERT) private Date createTime;TableField(f…

复旦大学EMBA王世峰:坚持科技创造与品质,铸就“中国智造”梦!

当前&#xff0c;新能源产业呈现持续爆发式增长趋势&#xff0c;2023年《政府工作报告》对汽车行业提出“扩大消费绿色发展”的指导方向。动力电池是新能源汽车核心概念&#xff0c;对新能源汽车的性能和品质起着决定性作用。锂离子电池在电动汽车、电动飞行器、储能等领域的应…

Centos安装Jenkins官方方式安装教程

通过Jenkins官网方式安装&#xff0c;官网地址&#xff1a;Jenkins # 执行命令 sudo wget -O /etc/yum.repos.d/jenkins.repo https://pkg.jenkins.io/redhat-stable/jenkins.repo # 执行 sudo rpm --import https://pkg.jenkins.io/redhat-stable/jenkins.io-2023.key # yum方…

设计模式 - 行为型模式:模板方法模式(概念 | 案例实现 | 优缺点 | 使用场景)

目录 一、行为型模式 1.1、模板方法模式 1.1.1、概念 1.1.2、案例实现 1.1.3、优缺点 1.1.4、使用场景 一、行为型模式 一句话概括行为型模式 行为型模式&#xff1a;类或对象间如何交互、如何划分职责&#xff0c;从而更好的完成任务. 1.1、模板方法模式 1.1.1、概念 …

Go 语言中的反射

今天主要来聊聊 Go 语言中反射&#xff0c;希望对你有新的认知 虽然很多人使用 Go 语言有一定时间了&#xff0c;甚至有的使用了 1 年 2 年&#xff0c;然后对于 Go 语言中的反射还是模棱两可&#xff0c;使用起来的时候&#xff0c;心里也不是非常有底气 更有甚者&#xff0…

星际争霸之小霸王之小蜜蜂(十七)--究极体

系列文章目录 星际争霸之小霸王之小蜜蜂&#xff08;十六&#xff09;--狂奔的花猫 星际争霸之小霸王之小蜜蜂&#xff08;十五&#xff09;--剧将终场 星际争霸之小霸王之小蜜蜂&#xff08;十四&#xff09;--资本家的眼泪 星际争霸之小霸王之小蜜蜂&#xff08;十三&…