本篇会加入个人的所谓鱼式疯言
❤️❤️❤️鱼式疯言:❤️❤️❤️此疯言非彼疯言
而是理解过并总结出来通俗易懂的大白话,
小编会尽可能的在每个概念后插入鱼式疯言,帮助大家理解的.
🤭🤭🤭可能说的不是那么严谨.但小编初心是能让更多人能接受我们这个概念 !!!
引言
HTTP 协议(超文本传输协议)是万维网中数据通信的基础。它定义了客户端与服务器之间如何进行交互,确保信息能够准确、高效地在网络中传输。从简单的网页浏览到复杂的网络应用,HTTP 协议都发挥着至关重要的作用,是互联网世界不可或缺的一部分。
目录
-
http的方法
-
http的报头详解
-
http的状态码
一. http 的方法
1. http 方法的初识
http方法本质上是描述了 http的请求的 “动作”
比如:
我吃饭
我买饭
我做饭
在上篇中, 我们谈及 GET 是 客户端从服务器中拿 xxx 数据
POST 是 客户端给服务器发送 xxx 数据 。
但是除了 GET
和 POST
方法之外, 还有 其他方法
上面主流的方法相当于数据库的: get: 查, post:增 , delete : 删, put: 改。
虽然这上面有很多方法,但是在实际开发中, 经常的只是用到 get
和 post
, 偶尔用到 delete
和 put
。
好比东晋谢灵韵说过一句话:
天下文才十斗, 曹子建(曹植)独占一斗, 自己独占一斗, 天下人公分一斗。
而换成HTTP方法有十斗, get 独占八斗 , post
占一斗, 剩下的占一斗 ~
所以从中体会到 get 和 post
方法的常用性 和重要性, 所以面试中也会经常考察这 两者之间的区别。
2. get 的使用场景
-
直接在浏览器中 输入 Url 会触发get 请求
-
HTML 中很多元素都会进一步触发 get 请求(下面但凡搜到百度域名的都会触发get请求)
- js 代码中也会触发 get 请求
3. post的使用场景
- 登入/注册(像主编登入 gitee 就会触发 post 请求)
- 上传文件(像小编在gitee 上上传一张照片也会触发 post 请求)
4. get 和 post 的区别
其实 get 和 post 没有本质上的区别 ,也就是说: 能使用 get 的地方也可以用post 来代替, 能使用 post 的地方也能用 get 来代替 。
如果要谈及区别的话, 只能说在 平常开发习惯 上的用法。
<1>. 语义不同, 方法表示的含义不同
get 的含义是从服务器拿数据, post 是向服务器发送数据。
<2>. 传递数据的方式不同
get
是通过 查询字符串(query string)
的方式把 自定义数据传递服务器, 而 post
是通过 正文(body)
把 自定义数据传递给服务器 。
<3>. 幂等性不同
先了解幂等性不同之前, 我们先得了解什么是幂等性?
幂等性是数学上的概念, 可能讲起来比较抽象, 举个栗子吧
小伙伴都听过鲁迅先生的:
横眉冷对千夫指, 俯首甘为孺子牛。
其中的 孺子牛 就说明了:
当第一天,牛吃进去的草, 挤出来的奶。
那么第二天, 牛再吃草, 挤出来的还是奶
第三天, 牛吃草, 挤出来奶。
这样循环往复, 牛只要吃草, 挤出来的一定是相同的奶, 这样 不变的法则 们称之为幂等性。
如果牛第一天吃进去的是草, 挤出来的是奶;
第二天吃进去的是草, 挤出来的是xiang , 这样 会发生变化的法则 就不能称之为幂等性。
回到 幂等性的不同 的区别
那么对于
get
来说, 一般我们设置为 幂等性 ;
对于
post
来说, 一般我们设置为 非幂等性 。
鱼式疯言
幂等性 是对于一般而已的, 是要根据 具体的业务逻辑 来的。
比如广告这种, 就会根据不同的广告出现的频次来动态的规划出现的先后顺序, 就出现了改变,不再是幂等性的。
<4>. 承接幂等性
get 被设计成 幂等性
, 是可以被缓存的。
post 不
被设计成幂等性, 就 不需要被缓存 。
二. http的报头详解
对于请求 / 响应报文的报头,小伙伴们只要认识下面几个常见的键值对即可
-
Host
-
Content-Length
-
Content- Type
-
User-Agent (UA)
-
Referer
-
Cookie
1. Host
Host: wkbrs1.tingyun.com
表示着服务器的 地址和端口号。
其实这部分在 URL中有部分体现 了。
2. Content-Length
Content-Length: 11007
指的是 正文(body) 长度
鱼式疯言
如果没有正文 , 就 没有 Content-Length 这样的键值对。
3. Content- Type
Content-Type: text/plain;charset=UTF-8
用于指派特点的正文类型, 让 浏览器会根据这里的值来如何解析body 。
比如: test / css
, application / javascript
, application / json
。
4. User-Agent (UA)
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/129.0.0.0 Safari/537.36 Edg/129.0.0.0
UA
指的是: 操作系统的信息(版本), 浏览器的信息(版本)
鱼式疯言
有图有真相 :
5. Referer
Referer: https://www.csdn.net/
Referer
是描述着 当前页面是从哪个页面跳转过来的
www.csdn.net
就说明从 csdn 上跳转过来的
这个是用来 发给服务器 的~
https://wkbrs1.tingyun.com/action?
url=https%3A%2F%2Fwww.csdn.net%2F&pvid=859db54f64fb4087af00c02cb22a59be
&ref=https%3A%2F%2Fwww.csdn.net%2F&referrer=&v=3.3.1-saas.2
&av=3.3.1-saas.2&did=10_
其实 Url
中也说明了 从csdn网站跳转过来 的。
鱼式疯言
浏览器的回退
是 是和 浏览器自身维护的一个栈 有关。 不是Referer
无关。
而
Referer
是 发送给服务器 的。
比如广告商可以根据从哪里跳转到自己的广告页面来区分是百度的 还是搜狗的 , 从而确定收益等… 这样的作用。
6. Cookie
Cookie:
UN=mgzdwm;
Hm_up_6bcd52f51e9b3dce32bec4a3997715ac=%7B%22islogin%22%3A%7B%22value%22%3A%221%
22%2C%22scope%22%3A1%7D%2C%22isonline%22%3A%7B%22value%22%3A%221%22%2C%22scope%2
2%3A1%7D%2C%22isvip%22%3A%7B%
Cookie 是什么?
Cookie 是 浏览器本地化存储数据的一种机制, 是以 键值对的方式进行存储 , 是程序猿自己人为规定的, 按照域名为维度 进行存储。
Cookie 来自哪里 ?
Set-Cookie: csrfToken=v5icSAd3GLSmo_lWO464AmIy; Path=/newProxyVersions
Cookie 是客户端第一次访问服务器,服务器响应发送的一段数据 为 setCookie
Cookie 的作用是什么?
Cookie 最典型的场景就是保存用户的信息,相当于保存了用户的一个索引CookieID
如果用户需要查看并执行自身的各种任务, 就会把这个 CookieID
发送给服务器, 服务器那边 有详细的信息就会响应回去 , 并且服务器这边 自身是有CookieID 的 , 服务器自己使用也很方便。
这就相当于 两边都需要用到 , 就会暂时保存到 浏览器这边
。
举个小栗子来理解一下吧 :
比如小编的女神运动过度腿痛了
那么小编就要带她去医院
首先, 就需要拿着就诊卡挂号 , 然后就会登入医院的系统 , 这时服务器就会给我分配一个 CookieID, 就相当就诊卡上就是一个 CookieID 。
然后我去找医生看腿, 医生就叫我把她的就诊卡拿来刷一下, 医生就叫我带她先去检验科检验排泄物, 然后去影像科做个CT。
然后我们就去检验科检查,只要刷就诊卡。
最后到影像科做检查, 也只要刷就诊卡就行。
为啥只要刷就诊卡就行 ? 因为医生在给她看病的时候, 就把这样要做的事情登入的医院的服务器中, 而我们刷就诊卡的过程,就相当于把 CookieID 直接发送给服务器 , 这样 服务器就能及时做出效应
。
Cookie
生成CookieID
也就是相当于 给用户自己做一个标识 , 当用户需要的时候, 服务器就能 根据这个标识做出及时的响应。
三. http的状态码
对于状态码的认识, 小伙伴们应该见过!
下面让我们近距离来接触一下吧
1. 成功
像上述 200
, 204
就代表成功执行。
2. 客户端错误
404(No Found): 路径写错了
403(Forbidden) : 访问被拒绝(没有权限)
405: HTTP方法不被允许
3. 服务器错误
500 : 服务器内部错误
504: 响应没有在规定时间内返回
4. 重定向
302: 重定向
重定向: 就说明出现了网页跳转, 从 访问A网站 跳转到
访问B网站
。
比如小编要换手机号了, 从 A
换到 B
这时我只需要办一个 呼叫转移 即可。 当小编的朋友 用A 手机号联系时 , 就会从
A
跳转到B
。
鱼式疯言
一般而言:
2
开头的状态码: 成功
3
开头的状态码: 重定向
4
开头的状态码 : 客户端错误
5
开头的状态码: 服务器错误
目录
-
http的方法: 了解了主要的4中方法:
get
,put
,post
,delete
, 并且深入了解了 get 和post的使用场景, 和两种的不同。 -
http的报头详解:初步的了解了常见 六种不同的报头的键值对的结构特点。
-
http的状态码 : 一般就为
2,3 4,5
开头的 不同含义的状态标识 。
如果觉得小编写的还不错的咱可支持 三连 下 (定有回访哦) , 不妥当的咱请评论区 指正
希望我的文章能给各位宝子们带来哪怕一点点的收获就是 小编创作 的最大 动力 💖 💖 💖