HTTP协议
- http和https
- URL
- HTTP协议内容
- HTTP方法
- 状态码
- HTTP中header
http和https
http和https都是应用层协议
应用层的协议很多时候都需要来手动指定(自己定制协议),http是大佬们已经定义好的协议。(http协议简单,支持的扩展能力强,可以基于http进行自定制,节省开发成本 )
http协议基于TCP来实现
https 访问网站使用的协议类型。https(基于http实现的,只不过在http基础上引入一个加密层)
URL
网址,表示网络上的唯一一个资源的标识符
URL对应的path不同,获取到的页面也是不同的
URL中的服务器的ip来确定一个服务器
URL中的服务器端口来确定这个主机上的哪个进程
URL中的path来确定这个进程中所管理的哪个文件/资源
最终一次http请求得到的“网页”本质上是一个文件
urlencode和urldecode
urlencode
把url中包含的中文和特殊符号进行了转义,转义成%+十六进制数字形式
为啥要转义?
url中本身包含了一些特殊用途的符号.例如:/ &?# …这些特殊符号,不能在url的查询字符串中再出现(有可能导致浏览器解析出错)
urlencode的逆向操作urldecode
(url是http协议中的一个重要组成部分.但是url不是http的专属.可以搭配很多协议来使用)
HTTP协议内容
借助抓包工具(fidder)
fiddler界面上主要有三个部分
左侧:抓到的包的列表.选中你要查看某个包.
右上角:这个包的请求内容是啥.
右下角:这个包的响应内容是啥.
HTTP响应
HTTP方法
GET和POST区别
GET一般把数据放到url中
POST一般把数据放到body中
完全可以把GET的数据放到body中,也可以把POST的数据放到url中,只不过这样的用法很少见. (理论上完全可以)
状态码
HTTP中header
Content-Type: 数据类型(text/html等)
Content-Length: Body的长度
Host: 客户端告知服务器, 所请求的资源是在哪个主机的哪个端口上;
User-Agent: 声明用户的操作系统和浏览器版本信息;
referer: 当前页面是从哪个页面跳转过来的;
location: 搭配3xx状态码使用, 告诉客户端接下来要去哪里访问;
COOKIE: 用于在客户端存储少量信息. 通常用于实现会话(session)的功能;