From 2c59dca7e2a6c345c77f226391c80677f94a624c Mon Sep 17 00:00:00 2001 From: CyC2018 <1029579233@qq.com> Date: Sun, 30 Dec 2018 15:29:55 +0800 Subject: [PATCH] auto commit --- docs/notes/HTTP.md | 21 ++++++------------ .../766d401b-3cf6-475c-8ced-ea8c8db8edc5.png | Bin 0 -> 21504 bytes 2 files changed, 7 insertions(+), 14 deletions(-) create mode 100644 docs/pics/766d401b-3cf6-475c-8ced-ea8c8db8edc5.png diff --git a/docs/notes/HTTP.md b/docs/notes/HTTP.md index 688f86aa..ccff86d0 100644 --- a/docs/notes/HTTP.md +++ b/docs/notes/HTTP.md @@ -1,6 +1,6 @@ * [一 、基础概念](#一-基础概念) - * [URL](#url) + * [URI](#uri) * [请求和响应报文](#请求和响应报文) * [二、HTTP 方法](#二http-方法) * [GET](#get) @@ -58,9 +58,9 @@ # 一 、基础概念 -## URL +## URI -URI 包含 URL 和 URN,目前 WEB 只有 URL 比较流行,所以见到的基本都是 URL。 +URI 包含 URL 和 URN。 - URI(Uniform Resource Identifier,统一资源标识符) - URL(Uniform Resource Locator,统一资源定位符) @@ -92,7 +92,7 @@ URI 包含 URL 和 URN,目前 WEB 只有 URL 比较流行,所以见到的基 > 获取报文首部 -和 GET 方法一样,但是不返回报文实体主体部分。 +和 GET 方法类似,但是不返回报文实体主体部分。 主要用于确认 URL 的有效性以及资源更新的日期时间等。 @@ -151,7 +151,7 @@ DELETE /file.html HTTP/1.1 查询指定的 URL 能够支持的方法。 -会返回 Allow: GET, POST, HEAD, OPTIONS 这样的内容。 +会返回 `Allow: GET, POST, HEAD, OPTIONS` 这样的内容。 ## CONNECT @@ -174,11 +174,12 @@ CONNECT www.example.com:443 HTTP/1.1 发送请求时,在 Max-Forwards 首部字段中填入数值,每经过一个服务器就会减 1,当数值为 0 时就停止传输。 通常不会使用 TRACE,并且它容易受到 XST 攻击(Cross-Site Tracing,跨站追踪)。 + # 三、HTTP 状态码 服务器返回的 **响应报文** 中第一行为状态行,包含了状态码以及原因短语,用来告知客户端请求的结果。 -| 状态码 | 类别 | 原因短语 | +| 状态码 | 类别 | 含义 | | :---: | :---: | :---: | | 1XX | Informational(信息性状态码) | 接收的请求正在处理 | | 2XX | Success(成功状态码) | 请求正常处理完毕 | @@ -762,17 +763,11 @@ HTTP/2.0 要求客户端和服务器同时维护和更新一个包含之前见 详细内容请见上文 - 默认是长连接 - - 支持流水线 - - 支持同时打开多个 TCP 连接 - - 支持虚拟主机 - - 新增状态码 100 - - 支持分块传输编码 - - 新增缓存处理指令 max-age # 九、GET 和 POST 比较 @@ -857,8 +852,6 @@ DELETE /idX/delete HTTP/1.1 -> Returns 404 - 在使用 XMLHttpRequest 的 POST 方法时,浏览器会先发送 Header 再发送 Data。但并不是所有浏览器会这么做,例如火狐就不会。 - 而 GET 方法 Header 和 Data 会一起发送。 - - # 参考资料 - 上野宣. 图解 HTTP[M]. 人民邮电出版社, 2014. diff --git a/docs/pics/766d401b-3cf6-475c-8ced-ea8c8db8edc5.png b/docs/pics/766d401b-3cf6-475c-8ced-ea8c8db8edc5.png new file mode 100644 index 0000000000000000000000000000000000000000..b51504ebe2a4aac74f0aa3bbb978edb376ca0d1d GIT binary patch literal 21504 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 literal 0 HcmV?d00001