1. Fiddler 的用法
在官网下载Fiddler并进行安装,打开后,先设置https;
勾选Decrypt HTTPS traffic和Ignore server certificate errors(unsafe);
查看抓到的包:
2.HTTP 协议的基本格式
2.1 HTTP 请求 (Request)
认识URL:
URL最关键的四个部分:
1.域名/ip;2.端口号 3.带层次的路径 4.查询字符串
http:80端口,采用tcp协议;https:443端口,采用tcp协议;
认识 "方法" (method)
方法1 | 说明 | 支持的HTTP协议版 |
GET | 获取资源 | 1.0、1.1 |
POST | 传输实体主体 | 1.0、1.1 |
PUT | 传输文件 | 1.0、1.1 |
HEAD | 获得报文首部 | 1.0、1.1 |
DELETE | 删除文件 | 1.0、1.1 |
OPTIONS | 询问支持的方法 | 1.1 |
TRACE | 追踪路径 | 1.1 |
CONNECT | 需求用隧道协议连接代理 | 1.1 |
LINK | 建立和资源之间的联系 | 1.0 |
UNLINE | 断开连接关系 | 1.0 |
1. GET 方法
GET 是最常用的 HTTP 方法. 常用于获取服务器上的某个资源.
在浏览器中直接输入 URL, 此时浏览器就会发送出一个 GET 请求.
另外, HTML 中的 link, img, script 等标签, 也会触发 GET 请求。
2.GET 请求的特点
- 首行的第一部分为 GET
- URL 的 query string 可以为空, 也可以不为空.
- header 部分有若干个键值对结构.
- body 部分为空.
3. POST 方法
POST 方法也是一种常见的方法. 多用于提交用户输入的数据给服务器(例如登陆页面).
通过 HTML 中的 form 标签可以构造 POST 请求, 或者使用 JavaScript 的 ajax 也可以构造 POST 请求.
POST 请求的特点:
首行的第一部分为 POST
URL 的 query string 一般为空 (也可以不为空)
header 部分有若干个键值对结构.
body 部分一般不为空. body 内的数据格式通过 header 中的 Content-Type 指定. body 的长度由
header 中的 Content-Length 指定.
4. 其他方法
PUT 与 POST 相似,只是具有幂等特性,一般用于更新
DELETE 删除服务器指定资源
OPTIONS 返回服务器所支持的请求方法
HEAD 类似于GET,只不过响应体不返回,只返回响应头
TRACE 回显服务器端收到的请求,测试的时候会用到这个
CONNECT 预留,暂无使用
2.2 认识请求 "报头" (header)
Host
表示服务器主机的地址和端口
http:80端口,https:443端口
Content-Length
表示 body 中的数据长度.
Content-Type
表示请求的 body 中的数据格式.
User-Agent (简称 UA)
表示浏览器/操作系统的属性.
Referer
表示这个页面是从哪个页面跳转过来的.
Cookie(非常重要的header属性)
Cookie 中存储了一个字符串, 这个数据可能是客户端(网页)自行通过 JS 写入的, 也可能来自于服务器(服
务器在 HTTP 响应的 header 中通过 Set-Cookie 字段给浏览器返回数据。
注意:Cookie中具体存什么内容?也是程序员自定义的部分;
Cookie是从哪里来的?
Cookie中的数据时来自于服务器的;
服务器会通过http响应的报头部分(set-cookie字段);
服务器来决定浏览器的Cookie要存储什么
Cookie是在哪存?
可以认为是存在于浏览器中,存在于硬盘的;
Cookie在存的时候,是按照浏览器+域名维度来进行细分的;
不同的浏览器,各自存各自的cookie;
同一个浏览器不同的域名,对应不同的cookie;
cookie里的内容不光是键值对,同时还有过期时间;
例如:很多网站,登录一次后,自动记录登录状态;
Cookie要到哪里去?
回到服务器;
客户端同一时刻是有很多的:服务器关心客户端的状态;
客户端这边就会通过Cookie来保存当前用户使用的中间状态;
当客户端访问浏览器的时候,就会自动的把Cookie的内容带入到请求中;
2.3 认识请求 "正文" (body)
正文中的内容格式和 header 中的 Content-Type 密切相关
2.4 HTTP 响应详解
四个部分:
1.首行 HTTP/1.1 200 OK
版本号 状态码 状态码描述
2.header
3.空行 表示header的结束标记
4.body
下面是常见的 HTTP 状态码:
200 - 请求成功
301 - 资源(网页等)被永久转移到其它URL
404 - 请求的资源(网页等)不存在
500 - 内部服务器错误
HTTP 状态码分类
HTTP 状态码由三个十进制数字组成,第一个十进制数字定义了状态码的类型。响应分为五类:信息响应(100–199),成功响应(200–299),重定向(300–399),客户端错误(400–499)和服务器错误 (500–599):
200 ok 成功了
404 not found 资源不存在,未找到
403 Forbidden 访问被拒绝(没有权限)
301永久性重定向:新网址完全继承旧网址,旧网址的排名等完全清零
302 临时重定向:类似于呼叫转移,方便进行网站迁移
500 服务器内部错误(服务器代码抛异常了)
504 超时请求 gateway timeout(响应时间太久,浏览器等不及)
2.5 总结
HTTP协议里,以下可以自己进行定义的:
1.URL中的路径
2.URL中的query string
3.header中的键值对
4.header中的cookie的键值对
5.body