当前位置: 首页 > news >正文

Javaweb - 9 HTTP 协议

HTTP 协议在前面计算机网络中有所提及,这里进行一定的复习~

目录

HTTP 简介

发展历程

HTTP 协议的会话方式

HTTP1.0 和 HTTP1.1 的区别

在浏览器中通过 F12 抓取请求响应报文包

请求和响应报文

报文的格式

​编辑

请求报文

客户端发送给服务端的报文:

请求行:

请求头:

请求体:

响应报文

响应报文格式

响应行:

响应头:

响应体:

响应状态码:

完!


HTTP 简介

HTTP 超文本传输协议(Hyper Text transfer protocol),是一个属于应用层的,面对对象的协议,适合于分布式超媒体信息系统。

它是一种详细规定了浏览器和万维网服务器之间互相通信的规则,通过因特网传送万维网的数据传送协议。客户端和服务端通信时传输的内容,我们一般称之为报文。

HTTP 协议规定了报文的格式。

HTTP 就是一个通信规则,既规定了客户端发给服务器的报文格式,也规定了服务器发送给客户端的报文格式。

我们主要就是要研究上面的这两种报文格式。客户端发送给服务器的称为”请求报文“,服务器发送给客户端的称为”响应报文“。

发展历程

HTTP/0.9 :
蒂姆伯纳斯李是一位英国计算机科学家,也是万维网的发明者。他在 1989 年创建了单行 HTTP 协议。它只是返回一个网页。这个协议在 1991年被命名为 HTTP/0.9。


HTTP/1.0:
1996 年,HTTP/1.0发布。该规范是显著扩大,并且支持三种请求方式:GET,HEAD,和POST
HTTP/1.0 相对于 HTTP/0.9 的改进如下:
        。每个请求都附加了 HTTP 版本
        。在响应开始时发送状态代码;
        。请求和响应都包含 HTTP 报文头;
        。内容类型能够传输 HTML 文件以外的文档;

但是,HTTP/1.0 不是官方标准。

HTTP/1.1:
        。 HTTP 的第一个标准化版本 HTTP/1.1(RFC 2068)于 1997 年初发布,支持七种请求方法:OPTIONS, GET, HEAD, POST, PUT, DELETE,和TRACE .
        HTTP/1.1 是 HTTP 1.0 的增强:
                。虚拟主机允许从单个IP 地址提供多个域;
                。 持久连接和流水线连接允许 web 浏览器通过单个持久连接发送多个请求;

                。 缓存支持节省了带宽并使响应速度更快;· HTTP/1.1 在接下来的 15 年左右将非常稳定。
        在此期间,出现了 HTTPS(安全超文本传输协议)。它是使用 SSL/TLS 进行安全加密通信的 HTTP的安全版本。

HTTP/2:
        。由IETF在2015年发布。HTTP/2旨在提高Web性能,减少延迟,增加安全性,使Web应用更加快速高效和可靠。
        多路复用:HTTP/2 允许同时发送多个请求和响应,而不是像 HTTP/1.1一样只能一个一个地处理。这样可以减少延迟,提高效率,提高网络吞吐量。
        二进制传输:HTTP/2 使用二进制协议,与 HTTP/1.1使用的文本协议不同。二进制协议可以更快地解析,更有效地传输数据,减少了传输过程中的开销和延迟。
        头部压缩:HTTP/2 使用 HPACK算法对 HTTP 头部进行压缩,减少了头部传输的数据量,从而减少了网络延迟。
        服务器推送:HTTP/2支持服务器推送,允许服务器在客户端请求之前推送资源,以提高性能。
        改进的安全性:HTTP/2默认使用TLS(Transport Layer Security)加密传输数据,提高了安全性。

        兼容 HTTP/1.1:HTTP/2 可以与 HTTP/1.1共存,服务器可以同时支持 HTTP/1.1和 HTTP/2。如果客户端不支持 HTTP/2,服务器可以回退到 HTTP/1.1。

HTTP/3:
        ·于2021年5月27日发布,HTTP/3是一种新的、快速、可靠且安全的协议,适用于所有形式的设备。 HTTP/3 没有使用 TCP,而是使用谷歌在 2012 年开发的新协议 OUIC。

        HTTP/3 是继 HTTP/1.1和 HTTP/2之后的第三次重大修订。

        HTTP/3 带来了革命性的变化,以提高Web性能和安全性。设置 HTTP3 网站需要服务器和浏览器支持。
        目前,谷歌云、Cloudflare和Fastly支持HTTP/3。Chrome、Firefox、Edge、Opera 和一些移动浏览器支持 HTTP/3。

HTTP 协议的会话方式

浏览器与服务器之间的通信要经历四个步骤:

浏览器与 WEB 服务器的连接过程是短暂的,每次连接都只处理一个请求和响应,对每一个页面的访问,浏览器和 WEB 服务器都要建立一次单独的连接。

浏览器到 WEB 服务器之间的所有通讯都是完全独立分开的请求和相应对。

HTTP1.0 和 HTTP1.1 的区别

HTTP1.1 增加了长连接的功能。

在 HTTP1.0 版本中,浏览器请求一个带有图片的网页,会由于下载图片,而和服务器之间再开启一个新的连接。但是,在 HTTP1.1 版本中,允许浏览器在拿到当前请求对应的全部资源后再断开连接,提高了效率。

还有就是在 HTTP1.1 中,浏览器有了缓存的功能,即加载过的资源就不用重新加载了,节省了带宽,提高了响应速度。

在浏览器中通过 F12 抓取请求响应报文包

几乎所有的 PC 端浏览器都支持 F12 开发者工具。

请求和响应报文

报文的格式

主体上,报文分为报文首部和报文主体,中间用空行隔开

报文首部,又可以继续细分为“行”和“头”

请求报文

客户端发送给服务端的报文:

        请求报文格式:

                请求首行(请求行):GET / POST 资源路径?参数 HTTP/1.1

                请求头信息(请求头)

                空行

                请求体

请求行:

请求方式 资源路径 协议版本号

例如:GET /web01/login.html?username=admin&password=123456 HTTP/1.1

请求头:

-主机虚拟地址
Host:localhost:8080
-长连接
Connection:keep-alive
-请求协议的自动升级[http的请求,服务器却是https的,浏览器自动会将请求协议升级为https的]

Upgrade-Insecure-Requests:1
-用户系统信息
User-Agent: Mozilla/5.8 (Windows NT 6.1; WOW64)AppleWebKit/537.36 (KHTML, 1ike Gecko) Chrome/68.0.3440.75 Safari/537.36
-浏览器支持的文件类型
Accept:text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;

q=0.8
-可以通过此路径跳转回上一个页面,-当前页面的上一个页面的路径[当前页面通过哪个页面跳转过来的]:广告计费,防止盗链
Referer:http://localhost:8080/05_web_tomcat/login.html

-浏览器支持的压缩格式
Accept-Encoding:gzip,deflate,br

-浏览器支持的语言
Accept-Language:zh-CN,zh;g=0.9,en-uS;q=0.8,en;q=0.7

请求体:

使用 form 表单发送 POST 请求,请求体中才会有数据

响应报文

响应报文格式

        响应首行(相应行):协议/版本号 状态码 状态码描述

        响应头信息(响应头)

        空行

        响应体

响应行:

协议及版本,响应状态码,状态描述

HTTP/1.1 200 OK (Tomcat10 省略)

响应头:

Server: Apache-Coyote/1.1           服务器的版本信息

Accept- anges: bytes

ETag: /"157-1534126125811" Last-Modified: Mon, 13 Aug 2018 02:08:45 GMT

Content-Type: text/html            响应体数据的类型浏览器根据类型解析响应体数据

Content-Length: 157                响应体内容的字节数

Date: Mon, 13 Aug 2018 02:47:57 GMT 响应的时间,这可能会有8小时的时区差

Connection:keep-alive           长连接

Keep-Alive:timeout=20          长连接的持续时间

响应体:

即是需要浏览器解析使用的内容(如果响应的是 html 页面,最终响应的内容会被浏览器显示到页面中)

<!--需要浏览器解析使用的内容[如果响应的是htm1页面,最终响应体内容会被浏览器显示到页面中1-->

<!DOCTYPE html>
<html>
        <head>
                <meta charset="UTF-8">
                <title>Insert title here</title>
        </head>
        <body>
                恭喜你,登录成功了...
        </body>
</html>

响应状态码:

响应码是告诉我们浏览器的响应结果。比较常见的响应码以及对应含义如下:

200:请求成功,浏览器会把响应体内容(通常是 html)显示在浏览器中

302:重定向,当响应码为 302 时,表示服务器要求浏览器重新再发一个请求,服务器会再发送一个响应头 Location 指定新请求的 URL 地址

304:使用了本地缓存

404:请求的资源没有找到

405:请求的方式不允许

500:请求的资源找到了,但服务器内部出现了错误

完!

http://www.dtcms.com/a/265003.html

相关文章:

  • MAC 多应用切换技巧,单应用切换技巧
  • CentOS 卸载docker
  • [学习记录] HLSL-编译指示及属性
  • IPS防御原理和架构
  • Prompt Engineering Guide — 提示工程全方位指南
  • Kafka Controller 元数据解析与故障恢复实战指南
  • UI前端大数据处理策略优化:基于云计算的数据存储与计算
  • leetcode:416.分割等和子集【01背包】【动态规划】
  • 光照解耦和重照明
  • 接口测试用例设计
  • Shader Graph学习——屏幕uv采样
  • 智能学号抽取系统 V3.7.5 —— 一个基于 Vue.js 的交互式网页应用
  • Arduino CH552 PWM的使用
  • 项目开发基本流程
  • 深入理解Unicode:字符编码的终极指南
  • RGB下的色彩变换:用线性代数解构色彩世界
  • vue3 JavaScript localeCompare 比较两个字符串 localeCompare is not a function
  • 如何将文件从 iPhone 传输到 Android(新指南)
  • Spring Boot 集成 GeoTools 详解
  • 昇腾机器节点磁盘状态检查与问题处理方法
  • 智能攻击原理和架构
  • 深入Flink核心概念:解锁大数据流处理的奥秘
  • vue-36(为组件编写单元测试:属性、事件和方法)
  • 【Linux】Rocky Linux 安装教程
  • vscode基本使用
  • armv8汇编码分析
  • QGIS+CesiumIon
  • 多模态进化论:GPT-5V图文推理能力在工业质检中的颠覆性应用
  • 媲美 GPT-4o,Kontext 实现高效文本驱动图像编辑
  • vscode、openocd 使用