写点什么

开源一夏 | 深入解析 HTTP(web 开发详细理解原理)【JavaWeb】

作者:上进小菜猪
  • 2022 年 8 月 07 日
  • 本文字数:1422 字

    阅读完需:约 5 分钟

一.HTTP 基本知识


超文本传输协议 HTTP:是一种简单的请求-响应协议,通常在 TCP 上运行。它指定客户端可以向服务器发送哪些消息以及将得到什么响应。HTTP:


  • 文本:html,字符串...

  • 超文本:音乐,图片,视频等等。

  • 端口号 80。Https:比 http 安全,端口:443。

二.http1.0 和 http2.0 对比

http1.0:规定浏览器和服务器仅保持短期连接。浏览器的每个请求都需要与服务器建立 TCP 连接。服务器完成请求处理后,会立即断开 TCP 连接。服务器不会跟踪每个客户,也不会记录过去的请求。HTTP 1.1:支持持久连接,默认情况下使用持久连接。可以在同一 TCP 连接中传输多个 HTTP 请求和响应。多个请求和响应可以重叠,并且可以同时执行多个请求与响应。更多的请求头和响应头(例如,HTTP 1.0 没有主机字段)。

三.HTTP 请求

以 B 站为例:打开 F12,找到 bilibili,查看 Headers:详细解析如下:


3.1 常规标头

常规标头如下:


Request URL: https://www.bilibili.com/Request Method: GETStatus Code: 200 Remote Address: 120.192.82.75:443Referrer Policy: strict-origin-when-cross-origin
复制代码


上述常规标头解释:Request URL:请求 URL。 b 站的域名 Request Method: 请求方式。 get 方法 Status Code:状态码。 200Remote Address:远程地址。 对应 b 站的远程地址。Referrer Policy: 引用站点策略。 引用的协议。

3.2 响应头

b 站的响应头如下:


cache-control: no-cachecontent-encoding: gzipcontent-type: text/html; charset=utf-8set-cookie: innersign=0; path=/; domain=.bilibili.com
复制代码


上述响应头解释:cache-control:缓存控制。 no-cache 禁止使用缓存 content-encoding:编码格式。 gzip 格式 content-type: 链接方式。 text/html; charset=utf-8

3.3 请求标头

请求标头如下:


:authority: www.bilibili.com:method: GET:path: /:scheme: httpsaccept: text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.9accept-encoding: gzip, deflate, braccept-language: zh-CN,zh;q=0.9cache-control: max-age=0
复制代码


和响应头对应,基本参数作用相同,差别不大。

3.4 请求行

请求行中的请求方法:get 请求方法:get、post、head、delete、put、trace......Get:请求可以在有限的大小下携带更少的参数。数据内容将显示在浏览器的 URL 地址栏中,这是不安全但高效的 Post:请求可以携带的参数是无限的,并且大小是无限的。数据内容不会显示在浏览器的 URL 地址栏中,这是安全的,但效率低下。

3.5 消息头

主要的参数:


AcceptAccept-EncodingAccept-LanguageCache-ControlConnection
复制代码


上述消息头主要的参数解释如下:Accept:支持的数据类型。Accept-Encoding:支持的编码格式。Accept-Language:语言环境。Cache-Control:缓存控制,和上面一样。Connection:保活状态

四.HTTP 响应

响应是存在于服务器和客服端之间的。

4.1 响应体

Accept:支持的数据类型。Accept-Encoding:支持的编码格式。Accept-Language:语言环境。Cache-Control:缓存控制,和上面一样。Connection:保活状态。HOST:主机。Refresh:刷新。Location:重定位。
复制代码

4.2 响应状态码(重点)

200 - 请求成功 301 - 资源(网页等)被永久转移到其它 URL3**:3 开头的是重定向。404 - 请求的资源(网页等)不存在 500 - 内部服务器错误 502 - 网关错误


五. 思考题

留下一个经典的思考题题目:


在浏览器的地址栏中输入地址并按 enter 键时,页面会显示出来。怎么搞的?

发布于: 刚刚阅读数: 4
用户头像

上进小菜猪 2022.03.29 加入

努力做全栈,爱好开发,开发专业户。

评论

发布
暂无评论
开源一夏 | 深入解析HTTP(web开发详细理解原理)【JavaWeb】_开源_上进小菜猪_InfoQ写作社区