HTTP处于TCP/IP五层协议栈的应用层
HTTP/1,HTTP/2是基于TCP的,HTTP/3是基于UDP的
和UDP,TCP不一样(他俩是二进制的协议),HTTP是一个文本格式的协议,不需要理解具体的二进制位,只需理解文本的格式即可
我们怎样才能看到HTTP的报文格式呢?-------->利用"抓包工具"来获取到具体的HTTP交互过程中的请求和响应。请求和响应都是要路过代理的,因此代理就能获取到请求和响应的详细内容
解释一下抓包工具----->它是一个第三方的程序,在网络通信过程中类似于"代理"这样一个角色。就比如说我妹想吃薯片,她让我去超市帮她买一包,那么我就是代理
当前课堂上我们用抓包工具是Fiddler(他是一个专门抓HTTP的抓包工具)
下面讲一下HTTP请求
举个例子:
下面对HTTP请求做一个详细的解释
1.关于URL
(1)URL的基本格式:
(2)URL encode
当query string中包含了特殊字符(比如/ : ? & =等),就需要对特殊字符进行转义,这个转义的过程就叫做URL encode。
URL encode的规则就是把要转义的内容的ascii码(二进制值)取出来,然后用十六进制表示,同时加上%
举个例子:
在实际开发中前后端交互的时候,尤其是需要通过URL给服务器传递一些信息的时候,一定要针对里面的特殊符号(不仅仅是标点符号,还有中文字符)进行URL encode
反之,把转义后的内容还原回来就叫做URL decode
2.方法
(1)GET方法
在浏览器中直接输入 URL, 此时浏览器就会发送出一个 GET 请求.
另外, HTML 中的 link, img, script 等标签, 也会触发 GET 请求.
使用 JS 中的 ajax 也能构造 GET 请求
(2)POST方法
多用于提交用户输入的数据给服务器(例如登陆页面).
通过 HTML 中的 form 标签可以构造 POST 请求, 或者使用 JS 的 ajax 也可以构造 POST 请求