四、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.mzph.cn/news/34443.shtml

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

相关文章

基于TF-IDF+TensorFlow+词云+LDA 新闻自动文摘推荐系统—深度学习算法应用(含ipynb源码)+训练数据集

目录 前言总体设计系统整体结构图系统流程图 运行环境Python 环境TensorFlow环境方法一方法二 模块实现1. 数据预处理1)导入数据2)数据清洗3)统计词频 2. 词云构建3. 关键词提取4. 语音播报5. LDA主题模型6. 模型构建 系统测试工程源代码下载…

android ndk clang交叉编译ffmpeg动态库踩坑

1.ffmpeg默认使用gcc编译,在android上无法使用,否则各种报错,所以要用ndk的clang编译 2.下载ffmpeg源码 修改configure文件,增加命令 cross_prefix_clang 修改以下命令 cc_default"${cross_prefix}${cc_default}" cxx…

MySQL多表关联查询

目录 1. inner join: 2. left join: 3. right join: 4.自连接 5.交叉连接: 6、联合查询 7、子查询 1. inner join: 代表选择的是两个表的交差部分。 内连接就是表间的主键与外键相连,只取得键值一致…

Django配置(部署环境较乱,暂时启用)

django配置 web服务器中部署项目及WSGI简介 web服务器 WSGI 在IIS中部署django项目 安装 wfastcgi :pip install wfastcgi安装IIS: 以上选择项勾选后确定 将CGI文件复制到项目中, 将项目复制到IIS默认目录中 部署IIS 添加变量信息如下…

C++笔记之字节数组的处理

C笔记之字节数组的处理 code review! 文章目录 C笔记之字节数组的处理1.字节数组打印2.将字节数组转换为十六进制字符串并打印3.将字符串转为字节数组4.将字节数组转为字符串5.字节数组和字符数组的区别6.字节数组用于二进制数据存储7.字节数组用于网络通信数据传输8.使用 un…

uniapp+vue3+vite+pinia2.0.33项目初始化

目录 准备工作 注意事项 使用vue-cli创建项目 运行 准备工作 下载hbuild开发工具 HBuilderX-高效极客技巧 下载微信小程序开发工具 概览 | 微信开放文档 uniapp uni-app官网 注意事项 1.node.js版本>16#windows查看node版本 C:\Users\22862>node -v v18.16.0 …

【python】爬取豆瓣电影Top250(附源码)

前言 在网络爬虫的开发过程中,经常会遇到需要处理一些反爬机制的情况。其中之一就是网站对于频繁访问的限制,即IP封禁。为了绕过这种限制,我们可以使用代理IP来动态改变请求的来源IP地址。在本篇博客中,将介绍如何使用代理IP的技术…

WebRTC | 实现数据流的一对一通信

目录 一、浏览器对WebRTC的支持 二、MediaStream与MediaStreamTrack 三、RTCPeerConnection 1. RTCPeerConnection与本地音视频数据绑定 2. 媒体协商SDP 3. ICE (1)Candidate信息 (2)WebRTC收集Candidate (3&…

搭建Docker环境

目录 一、docker环境搭建 1、卸载旧版本docker 2、安装依赖和设置仓库 3、安装docker 4、启动并加入开机启动 5、验证是否安装成功 二、利用docker搭建nginx 1、拉取镜像 2、启动容器,部署nginx 一、docker环境搭建 1、卸载旧版本docker yum remove docke…

【linux】2 软件管理器yum和编辑器vim

目录 1. linux软件包管理器yum 1.1 什么是软件包 1.2 关于rzsz 1.3 注意事项 1.4 查看软件包 1.5 如何安装、卸载软件 1.6 centos 7设置成国内yum源 2. linux开发工具-Linux编辑器-vim使用 2.1 vim的基本概念 2.2 vim的基本操作 2.3 vim正常模式命令集 2.4 vim末行…

[Blender]Geometry nodes altermesh to UE

首先要先下载插件 AlterMesh – Use geometry nodes inside Unreal 下载对应版本的插件后 打开UE,在对应的设置里面挂上blender.exe的路径 去官方下载一个Blender Geometry nodes 的示例 Demo Files — blender.org​​​​​​

Java项目-苍穹外卖-Day03

文章目录 员工分页查询功能实现需求分析和设计代码开发pageHelper底层代码完善 启用禁用员工账号功能开发需求分析 员工分页查询功能实现 需求分析和设计 代码开发 先设计类 将对应分页查询的传参类以及结果类进行封装 对应真正返回的为Result<PageResult>Controller…

电商3D产品渲染简明教程

3D 渲染让动作电影看起来更酷&#xff0c;让建筑设计变得栩栩如生&#xff0c;现在还可以帮助营销人员推广他们的产品。 从最新的《阿凡达》电影到 Spotify 的上一次营销活动&#xff0c;3D 的应用让一切变得更加美好。 在营销领域&#xff0c;3D 产品渲染可帮助品牌创建产品的…

Scratch 之 枪战的枪械画法

大家可以参考百度图片寻找到的AK-47图片&#xff1a;AK47图片 此处我以MK18作为参照&#xff0c;MK18的造型可以在资源中获取 资源链接&#xff1a;https://download.csdn.net/download/leyang0910/88136393 对于不必要的&#xff08;繁琐的&#xff09;线条&#xff0c;我们可…

分享kubernetes部署:基于Ansible自动安装kubernetes

基于Ansible自动安装kubernetes 环境准备 我们以如下机器环境为例&#xff1a; 开放端口&#xff1a; 控制平面节点 工作节点 请按如上中规定的开放端口&#xff0c;或关闭防火墙&#xff1a; systemctlstopfirewalld&&\ systemctldisablefirewalld 安装常用工具 sudo…

点亮你的第一颗Led灯

1、&#x1f4d5;前言 该系列文章用于记录个人学习stm32单片机的过程&#xff0c;全文搭配图文解说&#xff0c;零基础的萌新也能读懂&#xff0c;欢迎指导讨论~ 2、&#x1f4e6;准备材料 2.1、&#x1f4dd;硬件材料清单 面包板1块 PWLINK PowerWriter仿真器1个 杜…

Python web实战之Django 的缓存机制详解

关键词&#xff1a;Python、Web 开发、Django、缓存 1. 缓存是什么&#xff1f;为什么需要缓存&#xff1f; 在 Web 开发中&#xff0c;缓存是一种用于存储数据的临时存储区域。它可以提高应用程序的性能和响应速度&#xff0c;减轻服务器的负载。 当用户访问网页时&#xff…

STM32基于CubeIDE和HAL库 基础入门学习笔记:功能驱动与应用

文章目录&#xff1a; 一&#xff1a;LED与按键驱动程序 main.c 1.闪灯 led.h led.c 2.按键控制LED亮灭 key.h key.c 二&#xff1a;蜂鸣器与继电器驱动程序 main.c 1.蜂鸣器 buzzer.h buzzer.c delay.h delay.c 2.继电器 relay.h relay.c 三&#xff1…

Spring Boot 统一功能处理(拦截器实现用户登录权限的统一校验、统一异常返回、统一数据格式返回)

目录 1. 用户登录权限校验 1.1 最初用户登录权限效验 1.2 Spring AOP 用户统⼀登录验证 1.3 Spring 拦截器 &#xff08;1&#xff09;创建自定义拦截器 &#xff08;2&#xff09;将自定义拦截器添加到系统配置中&#xff0c;并设置拦截的规则 1.4 练习&#xff1a;登录…

腾讯云2核2g轻量应用服务器能容纳多少人?

腾讯云轻量应用服务器2核2g能容纳多少人&#xff1f;轻量应用服务器2核2g配置自带4M公网带宽&#xff0c;以网站应用为例&#xff0c;假设优化后的网页平均大小为60KB&#xff0c;2核2G4M带宽轻量服务器可以支持10个并发数&#xff0c;即同时10个人在1秒内同时打开网站&#xf…