四、web应用程序技术——HTTP
文章目录
- 1 HTTP请求
- 2 HTTP响应
- 3 HTTP方法
- 4 URL
- 5 HTTP消息头
- 5.1 常用消息头
- 5.2 请求消息头
- 5.3 响应消息头
- 6 cookie
- 7 状态码
- 8 HTTP代理
- 9 HTTP身份验证
HTTP(HyperText Transfer Protocol,超文本传输协议)是访问万维网使用的核心通信协议,也是今天web应用程序使用的通讯协议。
HTTP使用一种基于消息的模型:客户端发出一条请求消息,而后由服务端返回一条响应消息。
1 HTTP请求
所有HTTP消息(请求与响应)中都包含一个或几个单行显示的消息头,然后是一条强制空白行,最后是消息主体(可选)。以下是一个典型的HTTP请求(部分):


每个HTTP请求的第一行都由3个以空格相隔的项目组成:
- 一个说明HTTP方法的动词。最常见的方法是GET,它的主要作用是从web服务器获取一个资源。GET请求并没有消息主体,因此在消息头后的空行中没有其他资源。
- 所请求的URL。该URL通常由所请求的资源名称,以及一个包含客户端向该资源提交的参数的可选查询字符串组成,查询字符串以?字符标识。
- 使用的HTTP版本。
其他要点如下:
- Referer消息头表示发出请求的原始URL;
- User_Agent消息头提供与浏览器或其他生成请求的客户端软件相关的信息。请注意,由于历史原因,大多数浏览器都包含Mozilla前缀。
- Host消息头用于指定出现在被访问的完整URL中的主机名称。如果几个web站点以相同的一台服务器为主机,就需要使用Host消息头,因为请求第一行中的URL内通常并不包含主机名称。
- Cookie消息头用于提交服务器向客户端发布的其他参数。
2 HTTP响应
以下是一个典型的HTTP响应:


每个HTTP响应的第一行由3个以空格间隔的项目组成。
- 使用的HTTP版本。
- 表示请求结果的数字状态码。200是最常见的状态码,它表示成功提交了请求,正在返回所请求的资源。
- 一段文本形式的“原因短语”,进一步说明响应状态。
响应示例的其他一些要点如下:
- Server消息头中包含一个旗标,指明所使用的web服务器软件。有时还包含其他消息,如所安装的模块和服务器操作系统,其中包含的信息可能并不准确。
- Set-cookie消息头向浏览器发送另一个cookie,它将在随后向服务器发送的请求中由Cookie消息头返回;
- Pragma消息头指示浏览器不要将响应保存在缓存中。Expires消息头指出响应内容已经过期,因此不应保存在缓存中。当返回动态内容时常常发送这些指令,以确保浏览器随时获得最新内容。
- 几乎所有的HTTP响应在消息头后的空白行下面都包含消息主体,Content-Type消息头表示这个消息主体中包含一个HTML文档。
- Content-Length消息头规定消息主体的字节长度。
3 HTTP方法
当渗透测试人员攻击Web应用程序时,几乎肯定会遇到最常用的方法:GET和POST。
- GET方法的作用在于获取资源。它可以用于URL查询字符串的形式向所请求的资源发送参数。
- POST方法的主要作用是执行操作。使用这个方法可以在URL查询字符串与消息主体中发送请求参数。
此外,还有其他方法:
- HEAD。这个方法的功能与Get方法相似,不同之处在于服务器不会在其响应中返回消息主体。服务器返回的消息头应与对应GET请求的消息头相同。这种方法可用于检查某一资源在向其提交GET请求前是否存在。
- TRACE。这种方法主要用于诊断,服务器应在响应主体中返回其收到的请求消息的具体内容。这种方法可用于检测客户端与服务器之间是否存在任何操纵请求的代理服务器。
- OPTIONS。这种方法要求服务器报告对某一特殊资源有效的HTTP方法。服务器通常返回一个包含ALLOW消息头的响应,并在其中列出所有有效的方法。
- PUT。这个方法试图使用包含在消息主体中的内容,向服务器上传指定资源。
4 URL
URL(Uniform Resource Locator,统一资源定位符)是标识web资源的唯一标识符,通过它即可获取其标识的资源。最常用的URL格式如下:

5 HTTP消息头
HTTP支持许多不同的消息头,一些消息头可用在请求与响应中,而其他一些消息头只能专门用在某个特定的消息中。
5.1 常用消息头
- Connection:这个消息头告诉通信的另一端,在完成HTTP传输后是关闭TCP连接,还是保持连接开放以接受其他消息。
- Content-Encoding:这个消息头为消息主体中的内容指定编码形式。为了尽快传输,特指传输之前的编码方案。
- Content-Length:这个消息头用于规定消息主体的字节长度。(HEAD语法的响应例外,它在对应的GET请求的响应中指出主体的长度)
- Transfer-Encoding:这个消息头指的是传输时使用的编码形式。
5.2 请求消息头
- Accept:这个消息头用于告诉服务器,客户端愿意接受哪些内容,如图像类型等。
- Accept-Encoding:这个消息头用于告诉服务器,客户端愿意接受哪些内容编码(对应Content-Encoding)。
- Authorization:这个消息头用于为一种内置HTTP身份验证向服务器提交证书。
- Cookie:这个消息头用于向服务器提交它之前发布的cookie。
- Host:这个消息头用于指定出现在所请求的完成URL中的主机名称。
- IF-Modified-Since:这个消息头用于说明浏览器最后一次收到所请求的资源的时间。如果自那以后资源没发生变化,服务器就会发出一个带状态码304的响应,指示客户端使用资源的副本。
- IF-None-Match:这个消息头用于指定一个实体标签。实体标签是一个说明消息主体内容的标识符。当最后一次收到所请求的资源时,浏览器提交服务器发布的实体标签,服务器可以使用实体标签确认浏览器是否使用资源的缓存副本。
- Origin。这个消息头用在跨域Ajax请求中,用于指示提出请求的域。
- Referer。这个消息头用于指示提出当前请求的原始URL。
- User-Agent。这个消息头提供域浏览器或生成请求的其他客户端软件有关信息。
5.3 响应消息头
- Access-Contro-Allow-Origin。这个消息头用于指示是否通过跨域Ajax请求获取资源。
- Cache-Control。这个消息头用于向浏览器传送缓存指令。
- ETag。这个消息头用于指示一个实体标签,客户端可在将来的请求中提交这个标识符,获得和IF-None-Match消息头相同的资源,通知服务器浏览器当前缓存中保存的是哪个版本的资源。
- Expires。这个消息头用于向浏览器说明消息主体内容的有效时间。在这个时间之前,浏览器可以使用这个资源的缓存副本。
- Location。这个消息头用于在重定向(那些状态码以3开头的响应)中说明重定向的目标。
- Pragma。这个消息头用于向浏览器传送缓存指令。
- Server。这个消息头提供所使用的web服务器软件的相关信息。
- Set-Cookie。这个消息头用于向浏览器发布cookie,浏览器会在随后的请求中将其返回给服务器。
- WWW-Authenticate。这个消息头用在带401状态码的响应中,提供于服务器所支持的身份验证类型有关的信息。
- X-Frame-Options。这个消息头指示浏览器框架是否及如何加载当前响应。
6 cookie
服务器使用cookie机制向客户端发送数据,客户端保存cookie并将其返回给服务器。具体而言,服务器使用Set-Cookie响应消息头发布cookie:

然后,用户的浏览器自动在随后的请求包中添加cookie消息头发给服务器:

cookie一般由一个名/值对构成,但也可包含任何不含空格的字符串。可以在服务器响应中使用几个Set-Cookie消息头发布多个cookie,并可在一个cookie消息头中用分号分隔不同的cookie,将它们全部返回给服务器。
7 状态码
每个HTTP响应消息都必须在第一行包含一个状态码,说明请求结果。根据状态码的一个位数字,可将状态码分为以下5类。
- 1XX——提供信息。
- 2XX——请求被成功提交。
- 3XX——客户端被重定向到其他资源。
- 4XX——请求包含某种错误。
- 5XX——服务器执行请求时遇到错误。
8 HTTP代理
HTTP代理服务器是一个协调客户端浏览器于目标web服务器之间访问的服务器。当配置浏览器使用代理服务器时,它会将请求提交到代理服务器,代理服务器再将请求传送到相关web服务器,并将响应返回给浏览器。
值得注意的是,如果使用代理服务器,HTTP的工作机制会出现两方面的差异:
- 当浏览器向代理服务器发布HTTP请求时,它会将完整的URL(包括协议前缀http://与服务器主机名称,在非标准URL中,还包括端口号)插入到请求中。代理服务器将提取主机名称和端口,并使用这些信息将请求只想正确的目标web服务器。
- 当使用HTTPS时,浏览器无法与代理服务器进行SSL握手,浏览器必须将代理作为一个纯粹的TCP级中继,由代理传递浏览器与目标web服务器之间的所有网络数据,并与浏览器进行正常的SSL握手。
9 HTTP身份验证
HTTP拥有以下机制用户身份验证机制:
- Basic。这是一种非常简单的身份验证机制,它在请求头中以Base64编码字符串的形式发送用户证书。
- NTLM。一种质询-响应式机制,它使用某个windows NTLM协议版本。
- Digest。一种质询-响应式机制,它随同用户证书一起使用一个随机值MD5校验和。
❗️❗️❗️因特网上的web应用程序基本很少使用这些身份验证机制。
相关文章:
四、web应用程序技术——HTTP
文章目录 1 HTTP请求2 HTTP响应3 HTTP方法4 URL5 HTTP消息头5.1 常用消息头5.2 请求消息头5.3 响应消息头 6 cookie7 状态码8 HTTP代理9 HTTP身份验证 HTTP(HyperText Transfer Protocol,超文本传输协议)是访问万维网使用的核心通信协议&…...
B2B2C小程序商城系统--跨境电商后台数据采集功能开发
搭建一个B2B2C小程序商城系统涉及到多个步骤和功能开发,其中包括跨境电商后台数据采集功能的开发。具体搭建步骤如下: 一、系统搭建 1. 确定需求和功能:根据B2B2C商城的需求,确定系统的功能和模块,包括商品管理、订单…...
Python-OpenCV中的图像处理-形态学转换
Python-OpenCV中的图像处理-形态学转换 形态学转换腐蚀膨胀开运算闭运算形态学梯度礼帽黑帽形态学操作之间的关系 形态学代码例程 形态学转换 形态学操作:腐蚀,膨胀,开运算,闭运算,形态学梯度,礼帽,黑帽等…...
理解 Python 的 for 循环
前言 嗨喽,大家好呀~这里是爱看美女的茜茜呐 在本篇博客中,我们将讨论 Python 中 for 循环的原理。 我们将从一组基本例子和它的语法开始,还将讨论与 for 循环关联的 else 代码块的用处。 然后我们将介绍迭代对象、迭代器和迭代器协议&…...
携程验证码
今日话题:凑字数水文章。大表哥们感兴趣可以看看。 携程验证类型总共有3种。无感,滑块,点选。 process_type:None为无感 验证接口:https://ic.ctrip.com/captcha/v4/risk_inspect process_type:JIGSAW为…...
资深媒体人宋繁银加入《数据猿》任总编辑,全面负责公司整体内容工作
大数据产业创新服务媒体 ——聚焦数据 改变商业 2023年7月北京,《数据猿》宣布正式任命宋繁银为总编辑,全面负责公司整体内容工作。此次重要的人事任命标志着《数据猿》的发展迈上了一个新的台阶,对于《数据猿》团队而言,不仅是一…...
【Unity实战100例】人物状态栏UI数据刷新—MVC观察者模式
目录 一.创建Model层数据模型 二.创建View层关联UI组件 三.创建Controller层使得V和M数据关联 源码:htt...
8路AD采集FMC子卡【产品资料】
FMC148是一款基于VITA57.4标准的JESD204B接口FMC子卡模块,该模块可以实现8路14-bit、500MSPS/1GSPS/1.25GSPS ADC采集功能。该板卡ADC器件采用ADI公司的AD9680芯片,全功率-3dB模拟输入带宽可达2GHz。该ADC与FPGA的主机接口通过16通道的高速串行GTX收发器进行互联。 …...
文章三:团队协作实践 - 协作高手:Git团队开发最佳实践
开始本篇文章之前先推荐一个好用的学习工具,AIRIght,借助于AI助手工具,学习事半功倍。欢迎访问:http://airight.fun 概述 在现代软件开发中,团队协作是必不可少的环节。而Git作为目前最受欢迎的分布式版本控制系统&a…...
Pyinstaller 打包 django 项目如何将命令行参数加入?
起因 Pyinstaller 打包 django 项目,打包成 manage.exe 后用命令行 cmd manage.exe 0.0.0.0:8001 --noreload 感觉很不方便。 希望能够直接把命令行参数也打包进去。 我是这样做的: 步骤 1.新建 main.py 文件 import osos.system(manage.exe runser…...
hive锁的管理器的介绍
各个管理器的使用: org.apache.hadoop.hive.gl.lockmgr.DbTxnManager 在 Hive 中被用于实现事务和锁的管理机制。它的使用场景通常涉及以下情况: ACID事务支持:当需要在 Hive 中进行复杂的数据操作,并确保这些操作以原子性、一致…...
以太网TCP协议(十二)
目录 一、概述 二、功能 2.1 连接管理 2.2 响应与序列号 2.3 超时重发 2.4 传输单位:段 2.5 窗口控制 2.6 流控制 2.7 拥塞控制 2.8 效率提高 三、报文格式 一、概述 TCP作为一种面向有连接的协议,只有在确认通信对端存在时才会发送数据&…...
ARM 架构下的汇编指令(持续更新中)
ARM 架构下的汇编指令 1. 预取指令1.1. pldw1.2. pld1.3. 使用场景 2. ldrex3. teq4. 条件分支指令4.1. beq4.2. bne 1. 预取指令 1.1. pldw pldw 是 “Prefetch Load Data for Write” 的缩写,pldw 指令用于预取写操作,它告诉处理器需要预先加载指定地…...
11款UML/SysML建模工具更新(2023.7)Papyrus、UModel……
DDD领域驱动设计批评文集 欢迎加入“软件方法建模师”群 《软件方法》各章合集 最近一段时间更新的工具有: 工具最新版本:drawio-desktop 21.6.5 更新时间:2023年7月22日 工具简介 开源绘图工具,用Electron编写,…...
FPGA外部触发信号毛刺产生及滤波
1、背景 最近在某个项目中,遇到输入给FPGA管脚的外部触发信号因为有毛刺产生,导致FPGA接收到的外部触发信号数量多于实际值。比如:用某个信号源产生1000个外部触发信号(上升沿触发方式)给到FPGA输入IO,实际…...
day38 滑动窗口
1. 滑动窗口 应用场景: 满足xxx条件(计算结果、出现次数、同时包含) 关键词:最长最短子串无重复等等 1)最长 左右指针在起始点,R 向右依次滑动循环; 如果: 窗内元素满足条件&#x…...
翻出了我当时学习的笔记来了html
php:高级语言 web应用程序 万维网 浏览器中查看 apache:服务器 mysql:数据库 html 标签 css:层叠样式表 javascript:客户端脚本 js jquery mysql数据库基础 php语法基础 面向对象(物件) smar…...
vuejs 设计与实现 - 快速diff算法
Vue.js 2 所采用的双端 Diff 算法。既然快速 Diff 算法如此高效,我们有必要了解它的思路。接下来,我们就着重讨论快速 Diff 算法的实现原理。 相同的前置元素和后置元素 快速 Diff 算法借鉴了纯文本 Diff 算法中预处理的步骤。 案例: 旧的…...
webpack基础知识七:说说webpack proxy工作原理?为什么能解决跨域?
一、是什么 webpack proxy,即webpack提供的代理服务 基本行为就是接收客户端发送的请求后转发给其他服务器 其目的是为了便于开发者在开发模式下解决跨域问题(浏览器安全策略限制) 想要实现代理首先需要一个中间服务器,webpac…...
nginx负载均衡(nginx结束)
本节主要内容 1、四层,七层代理的配置方法 2、负载均衡的算法 nginx负载均衡:反向代理来实现 反向代理有两种转发方式:1、四层代理 2、七层代理 Nginx的七层代理和四层代理 七层是最常见的反向代理方式,只能配置在nginx配置文…...
HTML 语义化
目录 HTML 语义化HTML5 新特性HTML 语义化的好处语义化标签的使用场景最佳实践 HTML 语义化 HTML5 新特性 标准答案: 语义化标签: <header>:页头<nav>:导航<main>:主要内容<article>&#x…...
Spark 之 入门讲解详细版(1)
1、简介 1.1 Spark简介 Spark是加州大学伯克利分校AMP实验室(Algorithms, Machines, and People Lab)开发通用内存并行计算框架。Spark在2013年6月进入Apache成为孵化项目,8个月后成为Apache顶级项目,速度之快足见过人之处&…...
DIY|Mac 搭建 ESP-IDF 开发环境及编译小智 AI
前一阵子在百度 AI 开发者大会上,看到基于小智 AI DIY 玩具的演示,感觉有点意思,想着自己也来试试。 如果只是想烧录现成的固件,乐鑫官方除了提供了 Windows 版本的 Flash 下载工具 之外,还提供了基于网页版的 ESP LA…...
2025盘古石杯决赛【手机取证】
前言 第三届盘古石杯国际电子数据取证大赛决赛 最后一题没有解出来,实在找不到,希望有大佬教一下我。 还有就会议时间,我感觉不是图片时间,因为在电脑看到是其他时间用老会议系统开的会。 手机取证 1、分析鸿蒙手机检材&#x…...
《基于Apache Flink的流处理》笔记
思维导图 1-3 章 4-7章 8-11 章 参考资料 源码: https://github.com/streaming-with-flink 博客 https://flink.apache.org/bloghttps://www.ververica.com/blog 聚会及会议 https://flink-forward.orghttps://www.meetup.com/topics/apache-flink https://n…...
Android Bitmap治理全解析:从加载优化到泄漏防控的全生命周期管理
引言 Bitmap(位图)是Android应用内存占用的“头号杀手”。一张1080P(1920x1080)的图片以ARGB_8888格式加载时,内存占用高达8MB(192010804字节)。据统计,超过60%的应用OOM崩溃与Bitm…...
全面解析各类VPN技术:GRE、IPsec、L2TP、SSL与MPLS VPN对比
目录 引言 VPN技术概述 GRE VPN 3.1 GRE封装结构 3.2 GRE的应用场景 GRE over IPsec 4.1 GRE over IPsec封装结构 4.2 为什么使用GRE over IPsec? IPsec VPN 5.1 IPsec传输模式(Transport Mode) 5.2 IPsec隧道模式(Tunne…...
20个超级好用的 CSS 动画库
分享 20 个最佳 CSS 动画库。 它们中的大多数将生成纯 CSS 代码,而不需要任何外部库。 1.Animate.css 一个开箱即用型的跨浏览器动画库,可供你在项目中使用。 2.Magic Animations CSS3 一组简单的动画,可以包含在你的网页或应用项目中。 3.An…...
纯 Java 项目(非 SpringBoot)集成 Mybatis-Plus 和 Mybatis-Plus-Join
纯 Java 项目(非 SpringBoot)集成 Mybatis-Plus 和 Mybatis-Plus-Join 1、依赖1.1、依赖版本1.2、pom.xml 2、代码2.1、SqlSession 构造器2.2、MybatisPlus代码生成器2.3、获取 config.yml 配置2.3.1、config.yml2.3.2、项目配置类 2.4、ftl 模板2.4.1、…...
【Android】Android 开发 ADB 常用指令
查看当前连接的设备 adb devices 连接设备 adb connect 设备IP 断开已连接的设备 adb disconnect 设备IP 安装应用 adb install 安装包的路径 卸载应用 adb uninstall 应用包名 查看已安装的应用包名 adb shell pm list packages 查看已安装的第三方应用包名 adb shell pm list…...
