四、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应用程序时,几乎肯定会遇到最常用的方法:GETPOST

  • 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应用程序基本很少使用这些身份验证机制。

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

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

相关文章

Sentieon | 每周文献-Multi-omics(多组学)-第九期

多组学系列文章-1 标题(英文): Prediction of axillary lymph node metastasis in triple-negative breast cancer by multi-omics analysis and an integrated model标题(中文): 基于多组学分析和综合模型…

Spark Catalog详解

前言 旁边的实习生说:我想要用spark代码中对hive库中的内部表和外部表进行批量删除(包括数据),咋感觉网上搜了一圈都找不到解决方案啊,spark这么鸡肋吗? 我:你应该静下心来好好把spark基础知识进行全面学习。 实习生:难道spark有这功能,而我没有学习过?咋弄啊? 我:…

STM32基础入门学习笔记:开发板 电路原理与驱动编程

文章目录: 一:触摸按键 1.触摸按键驱动程序(点击) touch_key.h touch_key.c main.c 2.按键双击和长按程序 touch_key.h touch_key.c main.c 3.触摸按键滑动程序 main.c 二:数码管显示 1.数码管RTC时钟LE…

JAVA电商平台免费搭建 B2B2C商城系统 多用户商城系统 直播带货 新零售商城 o2o商城 电子商务 拼团商城 分销商城 bbc

​ 1. 涉及平台 平台管理、商家端(PC端、手机端)、买家平台(H5/公众号、小程序、APP端(IOS/Android)、微服务平台(业务服务) 2. 核心架构 Spring Cloud、Spring Boot、Mybatis、Redis 3. 前…

如何使用Pycharm 快速搭建 Django 项目 (分享详细图文教程)

1. 准备工作 在开始创建Django项目之前,需要先确保已经安装了Python和Pycharm。并且python中已经安装好了Django依赖。 1安装python(这里我安装使用的是python3.11.4稳定版本) 官网下载太慢了这里直接贴网盘下载连接了,一起贴出py…

使用Python和wxPython将图片转换为草图

导语: 将照片转换为艺术风格的草图是一种有趣的方式,可以为您的图像添加独特的效果。在本文中,我们将介绍如何使用Python编程语言和wxPython图形用户界面库来实现这一目标。我们将探讨如何使用OpenCV库将图像转换为草图,并使用wxPython创建一…

AI和ChatGPT:人工智能的奇迹

AI和ChatGPT:人工智能的奇迹 引言什么是人工智能?ChatGPT:AI的语言之王ChatGPT的工作原理ChatGPT的优势和挑战AI和ChatGPT的未来展望结论 引言 人工智能(Artificial Intelligence,简称AI)是一项令人兴奋的…

不看后悔一辈子!不看错过50K!历尽心血总结Redis全局命令

前言: 📕作者简介:热爱编程的敖云岚,致力于C、Java、Python等多编程语言,热爱编程和长板的运动少年! 📘相关专栏:Java基础语法,JavaEE初阶,数据库&#xff0c…

【用于全变分去噪的分裂布雷格曼方法】实施拆分布雷格曼方法进行总变异去噪研究(Matlab代码实现)

💥💥💞💞欢迎来到本博客❤️❤️💥💥 🏆博主优势:🌞🌞🌞博客内容尽量做到思维缜密,逻辑清晰,为了方便读者。 ⛳️座右铭&a…

流量分析日志查看

一流量分析 buuctf wireshark 从题目出发,既然是上传登录信息,就直接过滤post请求,即搜索 http.request.methodPOST,因为上传用户登录信息使用的一定是http里的post方法 模式过滤 http.request.method “GET” http.request.…

Vantage透明屏的工作原理是什么?应用、展示、显示

Vantage透明屏是一种新型的显示技术,它能够将图像和视频直接投影到透明的屏幕上,使得观众可以同时看到屏幕上的内容和背后的实物。 这种技术在广告、展览、零售和娱乐等领域有着广泛的应用前景。 Vantage透明屏的工作原理是利用透明的显示面板和背后的…

Spring Bean 生命周期的执行流程

问题描述 Spring 生命周期全过程大致分为五个阶段: 1、创建前准备阶段 2、创建实例阶段 3、依赖注入阶段 4、 容器缓存阶段 5、销毁实例阶段 下图是 Spring Bean 生命周期完整流程图,其中对每个阶段的具体操作做了详细介绍: 一、创建前准备阶…

Qt实现可伸缩的侧边工具栏(鼠标悬浮控制伸缩栏)

Qt实现可伸缩的侧边工具栏 一直在网上找,发现大多的实现方案都是用一个按钮,按下控制侧边栏的伸缩,但是我想要实现鼠标悬浮在侧边栏的时候就伸出,移开就收缩的功能,也没找到好的参考,所以决定自己实现一个…

【Spring练习项目】博客系统

目录 1.项目展示2.项目结构设计3.项目功能设计4 数据库准备4.1 建表4.2 DB相关数据 5.项目模块6.添加项目公共模块6.1 common6.2 实现前端界面 7.功能实现7.1实现博客列表约定前后端交互接口实现服务器代码实现客户端代码 7.2实现博客详情约定前后端交互接口实现服务器代码实现…

20、Flink SQL之SQL Client: 不用编写代码就可以尝试 Flink SQL,可以直接提交 SQL 任务到集群上

Flink 系列文章 1、Flink 部署、概念介绍、source、transformation、sink使用示例、四大基石介绍和示例等系列综合文章链接 13、Flink 的table api与sql的基本概念、通用api介绍及入门示例 14、Flink 的table api与sql之数据类型: 内置数据类型以及它们的属性 15、Flink 的ta…

MySQL 查询语句大全

目录 基础查询 直接查询 AS起别名 去重(复)查询 条件查询 算术运算符查询 逻辑运算符查询 正则表达式查询⭐ 模糊查询 范围查询 是否非空判断查询 排序查询 限制查询(分页查询) 随机查询 分组查询 HAVING 高级查询…

QT图形视图系统 - 使用一个项目来学习QT的图形视图框架 - 终篇

QT图形视图系统 - 终篇 接上一篇,我们需要继续完成以下的效果; 先上个效果图: 资源路径:https://download.csdn.net/download/turbolove/88192114?spm1001.2014.3001.5503 修改背景,使之整体适配 上一篇我们绘制了…

领航优配:沪指震荡涨0.47%,保险、券商板块强势,互联金融概念活跃

4日早盘,两市股指高开高走,沪指一度涨逾1%打破3300点,随后涨幅有所收窄;两市半日成交超6000亿元,北向资金小幅净流入。 截至午间收盘,沪指涨0.47%报3295.91点,深成指涨0.67%,创业板指…

使用idea如何生成webservice客户端

需求阐述 在和外围系统对接的时候,对方只给了wsdl地址,记得之前了解到的webservice,可以用idea生成客户端代码。先记录生成的步骤 使用idea如何生成webservice客户端 1.创建一个Java项目 2.第二步生成代码 我的idea再右键要生成文件目录里…

01.Redis实现发送验证码保存功能

学习目标&#xff1a; 提示&#xff1a;学习如何利用Redis来实现发送验证码功能 学习产出&#xff1a; 流程图 1. 准备pom环境 <dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-data-redis</artifact…