HTTP(超文本传输协议)一非常广泛的应用层协议

HTTPS (超文本传输安全协议):就是在HTTP的基础上利用SSL/TLS对数据包进行加密

是一个文本协议,我们可以通过使用fiddler抓包,了解http请求和响应的细节

官网下载Download Fiddler Web Debugging Tool for Free by Telerik

 HTTP 协议的基本格式和 fiddler 的用法_键值对

安装过程一路点击next就可以

Fiddle并不自动支持https协议需要我们手动打开

点击tools HTTPS 一开始都是关闭的

 HTTP 协议的基本格式和 fiddler 的用法_服务器_02

我们浏览器中随便搜索一下就可以在fiddler中看到https的请求和响应

 HTTP 协议的基本格式和 fiddler 的用法_状态码_03

右侧上方显示了https请求的报文内容

右侧下方显示了https响应的报文内容

 HTTP 协议的基本格式和 fiddler 的用法_服务器_04

点击Raw可以看见详细的内容, 点击一下将响应编译

 HTTP 协议的基本格式和 fiddler 的用法_键值对_05

请求和响应的详细数据可以通过View in Notepad,在记事本中查看

 HTTP 协议的基本格式和 fiddler 的用法_服务器_06

 HTTP 协议的基本格式和 fiddler 的用法_状态码_07

一个http请求分为四个部分

1.首行 

2.header报头

3.空行

4.body正文

请求

 HTTP 协议的基本格式和 fiddler 的用法_键值对_08

请求的首行包含 方法 URL 版本

 HTTP 协议的基本格式和 fiddler 的用法_服务器_09

Header:代表请求的属性,是使用冒号':' 分割的键值对 每一组属性使用\n 换行

遇到空行表示Header部分结束

响应

 HTTP 协议的基本格式和 fiddler 的用法_状态码_10

响应的首行:版本号 状态码 状态码解释

body存在, 在header中会存在 Content-Type表示body的数据类型  Content-Length标识body的长度

URL(Uniform Resource Locator) 统一资源定位符


方法

 HTTP 协议的基本格式和 fiddler 的用法_状态码_11

最常见的就是Get 和 Post的方法

Get:

一般用来获取数据 

Get请求的特点

首行的第一部分为 GET

URL 的 query string (查询字符串,也是由多个键值对组成,键值对之间使用'&'隔开,键和值之间使用'='隔开)可以为空, 也可以不为空.

header 部分有若干个键值对结构.

body 部分为空.

Post:

一般用来提交数据 (登录界面)

 HTTP 协议的基本格式和 fiddler 的用法_键值对_12

 HTTP 协议的基本格式和 fiddler 的用法_状态码_13

那么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字段个浏览器返回的数据

 HTTP 协议的基本格式和 fiddler 的用法_状态码_14

状态码:

 HTTP 协议的基本格式和 fiddler 的用法_状态码_15

一些常见的状态码

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大类:

 HTTP 协议的基本格式和 fiddler 的用法_状态码_16