HTTP(超文本传输协议)一非常广泛的应用层协议
HTTPS (超文本传输安全协议):就是在HTTP的基础上利用SSL/TLS对数据包进行加密
是一个文本协议,我们可以通过使用fiddler抓包,了解http请求和响应的细节
官网下载Download Fiddler Web Debugging Tool for Free by Telerik
安装过程一路点击next就可以
Fiddle并不自动支持https协议需要我们手动打开
点击tools HTTPS 一开始都是关闭的
我们浏览器中随便搜索一下就可以在fiddler中看到https的请求和响应
右侧上方显示了https请求的报文内容
右侧下方显示了https响应的报文内容
点击Raw可以看见详细的内容, 点击一下将响应编译
请求和响应的详细数据可以通过View in Notepad,在记事本中查看
一个http请求分为四个部分
1.首行
2.header报头
3.空行
4.body正文
请求
请求的首行包含 方法 URL 版本
Header:代表请求的属性,是使用冒号':' 分割的键值对 每一组属性使用\n 换行
遇到空行表示Header部分结束
响应
响应的首行:版本号 状态码 状态码解释
body存在, 在header中会存在 Content-Type表示body的数据类型 Content-Length标识body的长度
URL(Uniform Resource Locator) 统一资源定位符
方法
最常见的就是Get 和 Post的方法
Get:
一般用来获取数据
Get请求的特点
首行的第一部分为 GET
URL 的 query string (查询字符串,也是由多个键值对组成,键值对之间使用'&'隔开,键和值之间使用'='隔开)可以为空, 也可以不为空.
header 部分有若干个键值对结构.
body 部分为空.
Post:
一般用来提交数据 (登录界面)
那么Get和Post有什么区别?
语义不同: GET 一般用于获取数据, POST 一般用于提交数据.
GET 的 body 一般为空, 需要传递的数据通过 query string 传递,
POST 的 query string 一般为空, 需要传递的数据通过 body 传递
GET 请求一般是幂等的, POST 请求一般是不幂等的. (如果多次请求得到的结果一样, 就视为请求是幂等的).
GET 可以被缓存, POST 不能被缓存.
Host:表示主机服务器的地址和端口
Content-Type:body的数据类型
Content-Length:body的数据长度
User-Agent:描述浏览器和操作系统的属性
Referer:描述这个页面从哪个页面跳转过来
Cookie:存储的是一个字符串,数据可能是通过客户端(网页)自行通过js写入的,也可能来着服务器在https响应中的(可以通过Cookie判断浏览器是否访问过该页面)
Set-Cookie字段个浏览器返回的数据
状态码:
一些常见的状态码
200 OK: 访问成功
403 Forbidden :禁止访问
404 Not Found:没有找到资源
405 Method Not Allowed:方法不支持(服务器不一定支持所以得方法)
500 Internal Server Error:服务器内部出现错误
504 Gateway Timeout:网关超时(服务器负载较大时)
301 Moved permanently:永久重定向
302 Move temporarily:临时重定向
将状态码归为5大类: