四、web应用程序技术——HTTP

这篇具有很好参考价值的文章主要介绍了四、web应用程序技术——HTTP。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

  HTTP(HyperText Transfer Protocol,超文本传输协议)是访问万维网使用的核心通信协议,也是今天web应用程序使用的通讯协议。
  HTTP使用一种基于消息的模型:客户端发出一条请求消息,而后由服务端返回一条响应消息

1 HTTP请求

  所有HTTP消息(请求与响应)中都包含一个或几个单行显示的消息头,然后是一条强制空白行,最后是消息主体(可选)。以下是一个典型的HTTP请求(部分):
四、web应用程序技术——HTTP,penetration testing,前端,http,网络协议
四、web应用程序技术——HTTP,penetration testing,前端,http,网络协议

  每个HTTP请求的第一行都由3个以空格相隔的项目组成:

  • 一个说明HTTP方法的动词。最常见的方法是GET,它的主要作用是从web服务器获取一个资源。GET请求并没有消息主体,因此在消息头后的空行中没有其他资源。
  • 所请求的URL。该URL通常由所请求的资源名称,以及一个包含客户端向该资源提交的参数的可选查询字符串组成,查询字符串以?字符标识。
  • 使用的HTTP版本

  其他要点如下:

  • Referer消息头表示发出请求的原始URL;
  • User_Agent消息头提供与浏览器或其他生成请求的客户端软件相关的信息。请注意,由于历史原因,大多数浏览器都包含Mozilla前缀。
  • Host消息头用于指定出现在被访问的完整URL中的主机名称。如果几个web站点以相同的一台服务器为主机,就需要使用Host消息头,因为请求第一行中的URL内通常并不包含主机名称。
  • Cookie消息头用于提交服务器向客户端发布的其他参数。

2 HTTP响应

  以下是一个典型的HTTP响应:

四、web应用程序技术——HTTP,penetration testing,前端,http,网络协议
四、web应用程序技术——HTTP,penetration testing,前端,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格式如下:
四、web应用程序技术——HTTP,penetration testing,前端,http,网络协议

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:
四、web应用程序技术——HTTP,penetration testing,前端,http,网络协议
  然后,用户的浏览器自动在随后的请求包中添加cookie消息头发给服务器:
四、web应用程序技术——HTTP,penetration testing,前端,http,网络协议
  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应用程序基本很少使用这些身份验证机制。文章来源地址https://www.toymoban.com/news/detail-637904.html

到了这里,关于四、web应用程序技术——HTTP的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 5.2.10.应用程序如何调用驱动 mknod /dev/test c 250 0 创建设备文件,应用app 程序 调用 我们 驱动 壳子

    5.2.10.应用程序如何调用驱动 5.2.10.1、驱动设备文件的创建 (1)何为设备文件     索引驱动 (2)设备文件的关键信息是:设备号 = 主设备号 + 次设备号,使用ls -l去查看设备文件,就可以得到这个设备文件对应的主次设备号。         4颗LED不可能 都占用 主设备号,设备号

    2024年02月16日
    浏览(31)
  • 【已解决】无法在web.xml或使用此应用程序部署的jar文件中解析绝对uri:[http://java.sun.com/jsp/jstl/core]

    解决时间:2023/3/31,我使用的tomcat是8.5版本的,在整合SSM项目时在jsp中使用JSTL的核心标签库 - core,也就是使用 c:forEach 标签遍历出现了这个问题: 无法在web.xml或使用此应用程序部署的jar文件中解析绝对uri 不知道该怎么说明这个bug,因为我已经在网上试过很多方法了。 比如

    2024年02月07日
    浏览(53)
  • Flutter中的Web应用程序开发:构建现代Web应用程序

    作者:禅与计算机程序设计艺术 作为人工智能专家,程序员和软件架构师,CTO,我今天将为大家分享有关 Flutter 中 Web 应用程序开发的见解。在这篇文章中,我们将深入探讨 Flutter Web 应用程序的开发过程、技术原理以及最佳实践。 引言 随着移动设备的普及,Web 应用程序在全

    2024年02月12日
    浏览(56)
  • 基于Qt HTTP应用程序项目案例

    main函数创建对象空间,确认窗口的大小和坐标。

    2024年02月07日
    浏览(29)
  • Web应用程序安全

    Web应用程序是现代互联网应用的重要组成部分,但是由于其广泛性和复杂性,常常存在各种安全漏洞和风险,如跨站脚本攻击、SQL注入攻击、信息泄露等。为了保障Web应用程序的安全性,需要进行安全性评估,以发现和修复可能存在的安全漏洞和风险。本文将介绍Web应用程序

    2024年02月21日
    浏览(41)
  • Web 应用程序综合监控

    模拟用户通过 Web 应用程序的旅程并对其进行监控以检测任何增加延迟的元素的过程被广泛称为综合监控或综合测试。 为了确保最终用户的无缝体验,综合性能监控势在必行。监视综合事务以帮助您了解用户如何与 Web 应用程序交互,并确保其中关键元素的功能。 综合监测通

    2024年02月11日
    浏览(40)
  • 【Serverless Web 应用程序】构建流程

    【1】选择构建 Serverless Web 应用程序,程序架构如下所示: 【2】开发流程 【2.1】静态 Web 托管与持续部署: 所有的静态网页内容(HTML、CSS、JavaScript、图 像)和其他文件将由 AWS Amplify 控制台管理。用户将使用 AWS Amplify 控制 台公开的公共网站 URL 访问 Web。不需要额外运行

    2024年02月03日
    浏览(40)
  • Web 应用程序性能测试核心步骤

     通常大家做web 应用程序的时候会有哪些操作呢?今天就来看看常见的web 应用程序的常见操作。 1:识别测试环境。确定物理测试环境和生产环境,以及测试团队可用的工具和资源。物理环境包括硬件、软件和网络配置。在一开始就对整个测试环境有一个彻底的理解,可以使

    2024年01月18日
    浏览(32)
  • 在应用程序中发现不必要的 Http 响应头

      响应头中多了: Server: nginx/1.24.0   在服务器块下的nginx.conf中添加以下参数 保存nginx.conf文件, 然后重新启动Nginx以查看结果。

    2024年02月12日
    浏览(26)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包