【Java第27期】:HTTP协议的基本格式

嘿!你们好呀!
这期博客给你们介绍一下HTTP协议的基本格式!
希望对你们有帮助

前言

如果哪里有错误或者不理解的都可以私聊我哈!谢谢!

一,HTTP协议的工作过程

当我们在浏览器中输入一个 “网址”, 此时浏览器就会给对应的服务器发送一个 HTTP 请求. 对方服务器收到这个请求之后, 经过计算处理, 就会返回一个 HTTP 响应.
拿sogou来举例子:
在这里插入图片描述
我们都知道,当我们访问一个网站的时候,可能涉及不止一次HTTP的请求和响应的交互过程,我们可以通过 chrome 的开发者工具观察到:
在这里插入图片描述
每一条都是一次HTTP请求/响应。

二,HTTP请求

1,认识URL

平时我们俗称的 “网址” 其实就是说的 URL (Uniform Resource Locator 统一资源定位符).
互联网上的每个文件都有一个唯一的URL,它包含的信息指出文件的位置以及浏览器应该怎么处理它.
URL 的详细规则由 因特网标准RFC1738 进行了约定.(https://datatracker.ietf.org/doc/html/rfc1738)
在这里插入图片描述
(1)协议方案名:常见的有 http 和 https, 也有其他的类型. (例如访问 mysql 时用的
jdbc:mysql )
(2)登陆信息: 现在的网站进行身份认证一般不再通过 URL 进行了. 一般都会省略。
(3)服务器地址:此处是一个 “域名”, 域名会通过 DNS 系统解析成一个具体的 IP 地址.(通过ping命令可以查看到该域名的真实IP地址)
(4)端口号: 当端口号省略的时候, 浏览器会根据协议类型自动决定使用哪个端口. 例如 http 协议默认使用 80 端口, https 协议默认使用 443 端口.
(5) 带层次的文件路径
(6)查询字符串(query string). 本质是一个键值对结构. 键值对之间使用 & 分隔. 键和值之间使用 = 分隔。
(7)片段标识: 此 URL 中省略了片段标识. 片段标识主要用于页面内跳转. (例如 Vue 官方文档: https://cn.vuejs.org/v2/guide/#%E8%B5%B7%E6%AD%A5, 通过不同的片段标识跳转到文档的不同章节)

2,URL 中的可省略部分

(1)协议名: 可以省略, 省略后默认为 http://
(2)ip 地址 / 域名: 在 HTML 中可以省略(比如 img, link, script, a 标签的 src 或者 href 属性). 省略后表示服务器的 ip / 域名与当前 HTML 所属的 ip / 域名一致.
(3)端口号: 可以省略. 省略后如果是 http 协议, 端口号自动设为 80; 如果是 https 协议, 端口号自
动设为 443.
(4)带层次的文件路径: 可以省略. 省略后相当于 / . 有些服务器会在发现 / 路径的时候自动访问
/index.html
(5)查询字符串: 可以省略
(6)片段标识: 可以省略

3,方法(method)

在这里插入图片描述

(1)GET方法:

GET方法是HTTP中最常用的获取资源的方法,我们使用fiddler抓包观察该方法:
(以百度为例)
在这里插入图片描述
最前面的在这里插入图片描述
(蓝色字体)是通过浏览器地址栏发送的 GET 请求。
下面的和 baidu 域名相关的请求, 有些是通过 html 中的 link/script/img 标签产生的, 例如

在这里插入图片描述
(绿色字体)
有些是通过 ajax 的方式产生的, 例如
在这里插入图片描述
选中GET请求,观察结果为:
在这里插入图片描述
由上面可知GET请求的特点:
(1)首行的第一部分为 GET
(2)URL 的 query string 可以为空, 也可以不为空.
(3)header 部分有若干个键值对结构.
(4)body 部分为空.

(2)POST方法

POST 方法也是一种常见的方法. 多用于提交用户输入的数据给服务器(例如登陆页面). 通过 HTML 中的 form 标签可以构造 POST 请求, 或者使用 JavaScript 的 ajax 也可以构造 POST 请求.
通过fiddler观察POST 方法:
(以登录gitee为例)
在这里插入图片描述
观察POST结果:
在这里插入图片描述
在这里插入图片描述
由上面可知,POST 请求的特点:
(1)首行的第一部分为 POST
(2)URL 的 query string 一般为空 (也可以不为空)
(3)header 部分有若干个键值对结构.
(4)body 部分一般不为空. body 内的数据格式通过 header 中的 Content-Type 指定. body 的长度由header 中的 Content-Length 指定.
(这里只介绍常用的两种方法,其他方法可以自己了解)

三,HTTP响应

状态码

(1)200

200表示OK,访问成功
在这里插入图片描述
注意: 在抓包观察响应数据的时候, 可能会看到压缩之后的数据, 形如:
在这里插入图片描述
是因为网络传输中 “带宽” 是一个稀缺资源, 为了传输效率更高往往会对数据进行压缩。
如果想要查看,点击fiddler中的
在这里插入图片描述
可以进行解压缩就可以查看了。

(2)400 Not Found

表示没有找到资源。
浏览器输入一个 URL, 目的就是为了访问对方服务器上的一个资源. 如果这个 URL 标识的资源不存
在, 那么就会出现 404。
例如
输入 www.sogou.com/index.html正确显示:
在这里插入图片描述
输入www.sogou.com/index2.html就可以看到:
在这里插入图片描述

(3)403 Forbidden

表示访问被拒绝. 有的页面通常需要用户具有一定的权限才能访问(登陆后才能访问). 如果用户没有登陆直接访问, 就容易见到 403.
例如: 查看码云的私有仓库, 如果不登陆, 就会出现 403.
在这里插入图片描述

(4)405 Method Not Allowed

前面我们已经学习了 HTTP 中所支持的方法, 有 GET, POST, PUT, DELETE 等.
但是对方的服务器不一定都支持所有的方法(或者不允许用户使用一些其他的方法).

(5)500 Internal Server Error

服务器出现内部错误. 一般是服务器的代码执行过程中遇到了一些特殊情况(服务器异常崩溃)会产生这个状态码.

(6)504 Gateway Timeout

当服务器负载比较大的时候, 服务器处理单条请求的时候消耗的时间就会很长, 就可能会导致出现超时的情况.

(7)302 Move temporarily

临时重定向.

(8)301 Moved Permanently

永久重定向. 当浏览器收到这种响应时, 后续的请求都会被自动改成新的地址.
301 也是通过 Location 字段来表示要重定向到的新地址.

(9)小结:

在这里插入图片描述
这期博客就到此结束了,不罗嗦了,希望对你们有帮助!
记得关注小猪哈!
下期再见了~
在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

爱撸猫的程序媛

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值