静态web服务器开发之HTTP协议

news2024/10/5 21:14:07

文章目录

  • 版权声明
  • HTTP协议
  • 网址
  • HTTPS
  • 补充:HTTP的无状态特性
  • 浏览器访问Web服务器流程
  • HTTP协议请求报文
    • HTTP GET请求报文分析
    • POST请求方式
    • 要点总结
  • HTTP协议响应报文
    • HTTP 响应报文分析
    • HTTP 状态码
    • 要点总结
  • HTTP协议通信过程查看

版权声明

  • 本博客的内容基于我个人学习黑马程序员课程的学习笔记整理而成。我特此声明,所有版权属于黑马程序员或相关权利人所有。本博客的目的仅为个人学习和交流之用,并非商业用途。
  • 我在整理学习笔记的过程中尽力确保准确性,但无法保证内容的完整性和时效性。本博客的内容可能会随着时间的推移而过时或需要更新。
  • 若您是黑马程序员或相关权利人,如有任何侵犯版权的地方,请您及时联系我,我将立即予以删除或进行必要的修改。
  • 对于其他读者,请在阅读本博客内容时保持遵守相关法律法规和道德准则,谨慎参考,并自行承担因此产生的风险和责任。
  • 本博客中的部分观点和意见仅代表我个人,不代表黑马程序员的立场。

在这里插入图片描述

  • HTTP协议和网址(URL)是Web应用程序的两个基本(不可分割)组成部分。它们共同构成了Web应用程序的基础。

HTTP协议

  • HTTP协议的制作者是蒂姆·伯纳斯-李,1991年设计出来的,HTTP协议设计之初目的是传输网页数据的,现在允许传
    输任意类型的数据。

  • HTTP(Hypertext Transfer Protocol)是一种用于传输超文本的协议。

  • 超文本是指在文本数据的基础上还包括非文本数据,非文本数据有图片、音乐、视频等,而这些非文本数据会使用链接的方式进行加载显示,通俗来说超文本就是带有链接的文本数据也就是我们常说的网页数据。
  • HTTP协议使用TCP作为传输协议,发送数据之前需要先建立连接,TCP传输协议是用来保证网络中传输的数据的安全性的,HTTP协议是用来规定这些数据的具体格式的。

  • HTTP协议的主要作用是在Web应用程序中用于传输数据

  • HTTP协议基于请求/响应模型,客户端向服务器发送请求,服务器返回响应。它使得客户端和服务器之间的通信变得简单、可靠和灵活。

  • HTTP协议的主要特点包括:

    1. 简单:HTTP协议使用简单的请求/响应模型,易于实现和理解。
    2. 无状态:HTTP协议是无状态的,每个请求和响应之间是独立的,服务器不会保存任何客户端的状态信息。
    3. 可扩展:HTTP协议支持扩展,可以通过添加新的方法、头部字段等来满足不同的需求。
    4. 明文传输:HTTP协议的数据传输是明文的,容易被窃听和篡改。
    5. 无连接:HTTP协议是无连接的,每个请求和响应之间需要建立新的连接,会增加网络开销。

网址

  • 网址(URL)(Uniform Resource Locator)也称为统一资源定位符,是用于标识互联网上资源位置的字符串。网址由多个部分组成,包括协议、主机名、端口号、路径和查询参数等。

    https://www.example.com:8080/path/to/resource?key1=value1&key2=value2
    
  • 各部分的含义如下:

    • 协议(Protocol):客户端和服务器之间进行通信所采用的协议,常见的协议有HTTP、HTTPS、FTP等。

    • 主机名(Hostname):服务器的域名或IP地址,用于标识服务器的位置。

    • 端口号(Port):服务器的端口号,用于标识服务器上的应用程序。

    • 路径(Path):服务器上资源的路径,用于标识要访问的资源。

    • 查询参数(Query Parameters):请求中的参数,用于向服务器传递额外的信息。

  • 网址的主要作用是帮助客户端定位并访问服务器上的资源。

  • 网址是Web应用程序中不可分割的一部分,它是Web应用程序的基础之一。

HTTPS

  • HTTPS(Hypertext Transfer Protocol Secure)是一种用于加密通信的HTTP协议,它使用SSL或TLS协议进行加密,保证了客户端和服务器之间的通信安全。

  • HTTPS协议的主要特点包括:

    1. 安全:HTTPS协议使用SSL或TLS协议进行加密,保证了客户端和服务器之间的通信安全。它可以防止窃听、篡改和伪造等安全问题。

    2. 验证:HTTPS协议使用数字证书进行身份验证,确保客户端和服务器之间的通信是安全的。数字证书可以防止中间人攻击和DNS欺骗等问题。

    3. 可信:HTTPS协议使用公开密钥加密技术,保证了通信的可信性。公开密钥加密技术可以确保信息只能被合法的接收者解密,防止信息被篡改或伪造。

    4. 性能:HTTPS协议使用硬件加速和缓存技术,可以提高通信的性能和效率。它可以减少网络延迟、提高数据传输速度和降低服务器负载。

  • HTTPS协议是Web应用程序中用于加密通信的标准协议,它保证了客户端和服务器之间的通信安全和可信性。

  • HTTPS协议的使用可以有效地防止窃听、篡改和伪造等安全问题,是Web应用程序中必不可少的一部分。

补充:HTTP的无状态特性

HTTP使用TCP传输协议,为什么还是无状态的?

  • HTTP协议使用TCP作为传输协议,是因为TCP协议提供了可靠的数据传输和流量控制机制,可以保证HTTP协议的数据传输安全和可靠。但是,HTTP协议本身是无状态的,这是因为HTTP协议的设计如此。

  • HTTP协议的无状态性是指服务器不会保存客户端的状态信息,每个请求和响应之间是独立的,服务器不能识别一个请求是否来自同一个客户端。这是HTTP协议的设计原则之一,它可以提高Web应用程序的可伸缩性和可靠性。

  • HTTP协议的无状态性可以提高Web应用程序的可伸缩性和可靠性。由于服务器不需要保存客户端的状态信息,可以处理更多的请求,从而提高Web应用程序的吞吐量和性能。此外,由于每个请求和响应之间是独立的,服务器不会受到客户端状态的影响,可以更加可靠地处理请求。

  • 为了解决HTTP协议的无状态性问题,Web应用程序通常使用Cookie、Session等技术来保存客户端的状态信息。Cookie和Session技术可以在客户端和服务器之间保存状态信息,从而实现Web应用程序的状态管理。

  • 有关cookie和session内容,参看会话跟踪技术之Cookie&Session

浏览器访问Web服务器流程

在这里插入图片描述

HTTP协议请求报文

HTTP最常见的请求报文有两种:

  • GET方式的请求报文,获取Web服务器数据
  • POST方式的请求报文,向Web服务器提交数据

HTTP GET请求报文分析

在这里插入图片描述

---- 请求行 ----
GET /a/b/c HTTP/1.1  # GET请求方式 请求资源路径 HTTP协议版本
---- 请求头 -----
Host: www.itcast.cn  # 服务器的主机地址和端口号,默认是80
Connection: keep-alive # 和服务端保持长连接
Upgrade-Insecure-Requests: 1 # 让浏览器升级不安全请求,使用1--https请求 0--http请求
User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_4) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/69.0.3497.100 Safari/537.36  # 用户代理,也就是客户端的名称
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8 # 可接受的数据类型 q表示权值 越大越先加载
Accept-Encoding: gzip, deflate # 可接受的压缩格式
Accept-Language: zh-CN,zh;q=0.9 #可接受的语言
Cookie: pgv_pvi=1246921728; # 登录用户的身份标识
---- 空行 ----
  • 说明:每项数据之间使用:\r\n
GET / HTTP/1.1\r\n
Host: www.itcast.cn\r\n  
Connection: keep-alive\r\n
Upgrade-Insecure-Requests: 1\r\n
User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_4) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/69.0.3497.100 Safari/537.36\r\n
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8\r\n
Accept-Encoding: gzip, deflate\r\n
Accept-Language: zh-CN,zh;q=0.9\r\n
Cookie: pgv_pvi=1246921728; \r\n
\r\n  (请求头信息后面还有一个单独的’\r\n’不能省略)

POST请求方式

在这里插入图片描述

---- 请求行 ----
POST /xmweb?host=mail.itcast.cn&_t=1542884567319 HTTP/1.1 # POST请求方式 请求资源路径 HTTP协议版本
---- 请求头 ----
Host: mail.itcast.cn # 服务器的主机地址和端口号,默认是80
Connection: keep-alive # 和服务端保持长连接
Content-Type: application/x-www-form-urlencoded  # 告诉服务端请求的数据类型
User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_4) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/69.0.3497.100 Safari/537.36 # 客户端的名称
---- 空行 ----
---- 请求体 ----
username=hello&pass=hello # 请求参数
  • 说明:每项数据之间使用:\r\n
POST /xmweb?host=mail.itcast.cn&_t=1542884567319 HTTP/1.1\r\n
Host: mail.itcast.cn\r\n
Connection: keep-alive\r\n
Content-Type: application/x-www-form-urlencoded\r\n
User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_4) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/69.0.3497.100 Safari/537.36\r\n
\r\n(请求头信息后面还有一个单独的’\r\n’不能省略)
username=hello&pass=hello

要点总结

  • 一个HTTP请求报文可以由 请求行、请求头、空行和请求体 4个部分组成
  • 请求行是由三部分组成: 请求方式 请求资源路径 HTTP协议版本
  • GET方式的请求报文没有请求体,只有请求行、请求头、空行组成。
  • POST方式的请求报文由请求行、请求头、空行、请求体四部分组成
  • 注意:POST方式可以允许没有请求体,但是这种格式很少见

HTTP协议响应报文

HTTP 响应报文分析

在这里插入图片描述

--- 响应行/状态行 ---
HTTP/1.1 200 OK # HTTP协议版本 状态码 状态描述
--- 响应头 ---
Server: Tengine # 服务器名称
Content-Type: text/html; charset=UTF-8 # 内容类型
Connection: keep-alive # 和客户端保持长连接
Date: Fri, 23 Nov 2023 02:01:05 GMT # 服务端的响应时间
--- 空行 ---
--- 响应体 ---
<!DOCTYPE html><html lang=“en”></html> # 响应给客户端的数据
  • 说明:每项数据之间使用:\r\n

HTTP/1.1 200 OK\r\n
Server: Tengine\r\n
Content-Type: text/html; charset=UTF-8\r\n
Connection: keep-alive\r\n
Date: Fri, 23 Nov 2023 02:01:05 GMT\r\n
\r\n(响应头信息后面还有一个单独的’\r\n’不能省略)
<!DOCTYPE html><html lang=“en”></html>

HTTP 状态码

状态码类型含义
100信息客户端应该继续发送请求
101信息服务器已经切换协议
200成功请求已经成功,服务器返回了请求的数据
201成功请求已经被成功处理,并创建了新的资源
204成功请求已经成功,但是服务器没有返回任何内容
301重定向请求的资源已经被永久移动到新的位置
302重定向请求的资源已经被临时移动到新的位置
304重定向客户端缓存的资源是最新的,服务器返回了空响应
400客户端错误请求无效,服务器无法理解请求
401客户端错误请求需要认证,客户端没有提供有效的凭据
403客户端错误请求被服务器拒绝,客户端没有访问权限
404客户端错误请求的资源不存在
500服务器错误服务器在处理请求时发生了未知的错误
502服务器错误服务器作为网关或代理,从上游服务器接收到无效的响应
503服务器错误服务器暂时无法处理请求,通常是由于过载或维护
  • 解HTTP状态码的含义和使用方法,可以帮助更好地调试和优化Web应用程序。

要点总结

  • 一个HTTP响应报文是由响应行、响应头、空行和响应体4个部分组成。
  • 响应行是由三部分组成:HTTP协议版本 状态码 状态描述,最常见的状态码是200
    在这里插入图片描述

HTTP协议通信过程查看

在这里插入图片描述

  • 使用浏览器开发者工具
    在这里插入图片描述

标签选项说明

  • 元素(Elements):用于查看或修改HTML标签
  • 控制台 (Console) : 执行JS代码
  • 源代码 (Sources):查看静态资源文件,断点调试JS代码
  • 网络(Network): 查看http协议的通信过程
    在这里插入图片描述
    在这里插入图片描述
  • Headers选项总共有三部分组成:
    • General: 主要信息
    • Response Headers: 响应头
    • Request Headers: 请求头
  • Response选项是查看响应体信息的

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

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

相关文章

基于uniapp的 电子书小程序——需求整理

前言 想开发一个很简单的 电子书阅读小程序&#xff0c;要怎么做的。下面从功能、数据库设计这一块来说一下。说不一定能从某个角度提供一些思路 开发语言 springcloud uniapp 小程序&#xff08;vue2&#xff09;mysql 说明 电子书的主题是电子书&#xff0c;我们在日常…

运行软件报错找不到vcruntime140.dll无法继续执行代码怎么办-6个解决方法

vcruntime140.dll是一个由Microsoft Visual C提供的运行时库文件&#xff0c;它为许多Microsoft Visual Studio开发的应用程序提供了必要的支持。这个文件对于许多Windows应用程序的正常运行至关重要。然而&#xff0c;有时会出现vcruntime140.dll缺失的问题&#xff0c;导致应…

“继续教育”招生报名网存在支付漏洞

1.找到该网站的一个登录页面&#xff0c;注册好账户密码登录进去 2&#xff0c;进去之后&#xff0c;找到一个网上缴费功能 3.选择338元的套餐&#xff0c;支付方式我选的支付宝用burp抓包 发现money0参数与金额有关&#xff0c;于是就尝试把monet0改成一看看能不能搞一个零元购…

超级应用平台(HAP)起航

各位明道云用户和伙伴&#xff0c; 今天&#xff0c;我们正式发布明道云10.0版本。从这个版本开始&#xff0c;我们将产品名称正式命名为超级应用平台&#xff08;Hyper Application Platform, 简称HAP&#xff09;。我们用“超级”二字表达产品在综合能力方面的突破&#xff…

Java特殊文件

Properties 读取数据 package com.itheima.d1;import java.io.FileNotFoundException; import java.io.FileReader; import java.nio.charset.StandardCharsets; import java.util.Properties; import java.util.Set;public class Test1 {public static void main(String[] arg…

免费时代结束:百度云加速取消所有免费套餐

我是卢松松&#xff0c;点点上面的头像&#xff0c;欢迎关注我哦&#xff01; 在网站时代&#xff0c;凭借着“品牌”“SEO”“免费”的优势&#xff0c;百度云加速一跃成为国内最大的CDN服务商。但随着站长时代结束&#xff0c;和网站相关的产品越来越少&#xff0c;收费的名…

【极客技术】真假GPT-4?微调 Llama 2 以替代 GPT-3.5/4 已然可行!

近日小编在使用最新版GPT-4-Turbo模型&#xff08;主要特点是支持128k输入和知识库截止日期是2023年4月&#xff09;时&#xff0c;发现不同商家提供的模型回复出现不一致的情况&#xff0c;尤其是模型均承认自己知识库达到2023年4月&#xff0c;但当我们细问时&#xff0c;Fak…

系统安全测试要怎么做?

进行系统安全测试时&#xff0c;可以按照以下详细的步骤进行&#xff1a; 1、信息收集和分析&#xff1a; 收集系统的相关信息&#xff0c;包括架构、部署环境、使用的框架和技术等。 分析系统的安全需求、威胁模型和安全策略等文档。 2、威胁建模和风险评估&#xff1a; …

野指针详解

1.定义 概念&#xff1a; 野指针就是指针指向的位置是不可知的&#xff08;随机的、不正确的、没有明确限制的&#xff09;。 2.野指针成因 A.指针未初始化 #include <stdio.h> int main() { int *p;//局部变量指针未初始化&#xff0c;默认为随机值*p 20;return 0;…

GitHub Copilot:做出一个划时代的产品,只需要 6 个人

当前&#xff0c;Copilot 已经成为国内开发者常用的辅助工具。就像有的开发者评价称&#xff0c; “编码时&#xff0c;我希望干扰最少。在这方面&#xff0c;Copilot 给我提供了巨大的帮助。它减少了我可能花在网络上寻找解决方案的时间&#xff0c;而且它们在我最喜欢的 IDE …

C#学习相关系列之base和this的常用方法

一、base的用法 Base的用法使用场景主要可以概括为两种&#xff1a; 1 、访问基类方法 2、 调用基类构造函数 使用要求&#xff1a;仅允许用于访问基类的构造函数、实例方法或实例属性访问器。从静态方法中使用 base 关键字是错误的。所访问的基类是类声明中指定的基类。 例如&…

Latex 基本操作

好久没写博客了&#xff0c;最近一直在写毕业论文&#xff0c;不过对 Latex 的使用进一步了解&#xff0c;这里整理下来方便小伙伴们学习和参考。可以在 Gituhub 上找自己学校的模板&#xff0c;通常我们都是在找到的模板上进行写作&#xff0c;只需要掌握一下基本操作&#xf…

生物动力葡萄酒和有机葡萄酒一样吗?

农业维持了数十万年的文明&#xff0c;但当人类以错误的方式过多干预&#xff0c;过于专注于制造和操纵产品时&#xff0c;农业往往会失败。如果我们的目标是获得最高质量的收成&#xff0c;并长期坚持我们的做法&#xff0c;我们就必须与土地打交道。 当我们开始寻找生物动力…

Java Web——XML

1. XML概述 XML是EXtensible Markup Language的缩写&#xff0c;翻译过来就是可扩展标记语言。XML是一种用于存储和传输数据的语言&#xff0c;它使用标签来标记数据&#xff0c;以便于计算机处理和我们人来阅读。 “可扩展”三个字表明XML可以根据需要进行扩展和定制。这意味…

红队攻防实战之从边界突破到漫游内网(无cs和msf)

也许有一天我们再相逢&#xff0c;睁大眼睛看清楚&#xff0c;我才是英雄。 本文首发于先知社区&#xff0c;原创作者即是本人 本篇文章目录 网络拓扑图&#xff1a; 本次红队攻防实战所需绘制的拓扑图如下&#xff1a; 边界突破 访问网站&#xff1a; http://xxx.xxx.xxx…

Java之异常(下):自定义异常类

一、前言&#xff1a; 在我前面写的博客文章里有一篇叫《Java中关于自定义异常类的一些问题》&#xff0c;它里面讲到了大部分关于自定义异常的基础知识&#xff0c;如果大家想了解底层可以去那里查看。今天我将用一次细节的案例解析&#xff1a;我们所说的自定义异常类。 二、…

【学习篇】Linux中grep、sed、awk

Linux 文本处理三剑客 – awk, sed, grep grep过滤文本 https://zhuanlan.zhihu.com/p/561445240 grep 是 Linux/Unix 系统中的一个命令行工具&#xff0c;用于从文件中搜索文本或字符串。grep 代表全局正则表达式打印。当我们使用指定字符串运行 grep 命令时&#xff0c;如…

VMware安装windows操作系统

一、下载镜像包 地址&#xff1a;镜像包地址。 找到需要的版本下载镜像包。 二、安装 打开VMware新建虚拟机&#xff0c;选择用镜像文件。将下载的镜像包加载进去即可。

(Matalb回归预测)GA-BP遗传算法优化BP神经网络的多维回归预测

目录 一、程序及算法内容介绍&#xff1a; 基本内容&#xff1a; 亮点与优势&#xff1a; 二、实际运行效果&#xff1a; 三、部分代码&#xff1a; 四、分享本文全部代码数据说明手册&#xff1a; 一、程序及算法内容介绍&#xff1a; 基本内容&#xff1a; 本代码基于M…

如何在 Web 应用程序中查找端点?

如何在 Web 应用程序中查找端点? 这篇文章主要讲述了如何在网络应用中找到端点。以下是文章的主要要点: 端点是网络服务的访问地址,通过引用这个URL,客户可以访问服务提供的操作。端点提供了寻址Web服务端点所需的信息。 HTTP消息是服务器和客户端之间交换数据的方式,包…