From 708dc70185324fae91ddeaa0a986ea85c34b4c40 Mon Sep 17 00:00:00 2001 From: CyC2018 Date: Tue, 3 Nov 2020 02:25:47 +0800 Subject: [PATCH] auto commit --- docs/notes/HTTP.md | 83 +++++++++++++++++++++---- notes/HTTP.md | 83 +++++++++++++++++++++---- notes/pics/image-20201103021112251.png | Bin 0 -> 32810 bytes 3 files changed, 142 insertions(+), 24 deletions(-) create mode 100644 notes/pics/image-20201103021112251.png diff --git a/docs/notes/HTTP.md b/docs/notes/HTTP.md index 8501eff5..55ebf275 100644 --- a/docs/notes/HTTP.md +++ b/docs/notes/HTTP.md @@ -1,7 +1,7 @@ * [一 、基础概念](#一-基础概念) - * [URI](#uri) * [请求和响应报文](#请求和响应报文) + * [URL](#url) * [二、HTTP 方法](#二http-方法) * [GET](#get) * [HEAD](#head) @@ -58,21 +58,78 @@ # 一 、基础概念 -## URI +## 请求和响应报文 -URI 包含 URL 和 URN。 +客户端发送一个请求报文给服务器,服务器根据请求报文中的信息进行处理,并将处理结果放入响应报文中返回给客户端。 + +请求报文结构: + +- 第一行是包含了请求方法、URL、协议版本; +- 接下来的多行都是请求首部 Header,每个首部都有一个首部名称,以及对应的值。 +- 一个空行用来分隔首部和内容主体 Body +- 最后是请求的内容主体 + +``` +GET http://www.example.com/ HTTP/1.1 +Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.9 +Accept-Encoding: gzip, deflate +Accept-Language: zh-CN,zh;q=0.9,en;q=0.8 +Cache-Control: max-age=0 +Host: www.example.com +If-Modified-Since: Thu, 17 Oct 2019 07:18:26 GMT +If-None-Match: "3147526947+gzip" +Proxy-Connection: keep-alive +Upgrade-Insecure-Requests: 1 +User-Agent: Mozilla/5.0 xxx + +param1=1¶m2=2 +``` + +响应报文结构: + +- 第一行包含协议版本、状态码以及描述,最常见的是 200 OK 表示请求成功了 +- 接下来多行也是首部内容 +- 一个空行分隔首部和内容主体 +- 最后是响应的内容主体 + +``` +HTTP/1.1 200 OK +Age: 529651 +Cache-Control: max-age=604800 +Connection: keep-alive +Content-Encoding: gzip +Content-Length: 648 +Content-Type: text/html; charset=UTF-8 +Date: Mon, 02 Nov 2020 17:53:39 GMT +Etag: "3147526947+ident+gzip" +Expires: Mon, 09 Nov 2020 17:53:39 GMT +Keep-Alive: timeout=4 +Last-Modified: Thu, 17 Oct 2019 07:18:26 GMT +Proxy-Connection: keep-alive +Server: ECS (sjc/16DF) +Vary: Accept-Encoding +X-Cache: HIT + + + + + Example Domain + // 省略... + + + +``` + +## URL + +http 使用 URL( **U** niform **R**esource **L**ocator,统一资源定位符)来定位资源,它可以认为是是 URI(**U**niform **R**esource **I**dentifier,统一资源标识符)的一个子集,URL 在 URI 的基础上增加了定位能力。URI 除了包含 URL 之外,还包含 URN(Uniform Resource Name,统一资源名称),它知识用来定义一个资源的名称,并不具备定位该资源的能力。例如 urn:isbn:0451450523 用来定义一个书籍,但是却没有表示怎么找到这本书。

-## 请求和响应报文 - -### 1. 请求报文 - -

- -### 2. 响应报文 - -

+- [wikipedia:统一资源标志符](https://zh.wikipedia.org/wiki/统一资源标志符) +- [wikipedia: URL](https://en.wikipedia.org/wiki/URL) +- [rfc2616:3.2.2 http URL](https://www.w3.org/Protocols/rfc2616/rfc2616-sec3.html#sec3.2.2) +- [What is the difference between a URI, a URL and a URN?](https://stackoverflow.com/questions/176264/what-is-the-difference-between-a-uri-a-url-and-a-urn) # 二、HTTP 方法 @@ -171,6 +228,8 @@ CONNECT www.example.com:443 HTTP/1.1 通常不会使用 TRACE,并且它容易受到 XST 攻击(Cross-Site Tracing,跨站追踪)。 +- [rfc2616:9 Method Definitions](https://www.w3.org/Protocols/rfc2616/rfc2616-sec9.html) + # 三、HTTP 状态码 服务器返回的 **响应报文** 中第一行为状态行,包含了状态码以及原因短语,用来告知客户端请求的结果。 diff --git a/notes/HTTP.md b/notes/HTTP.md index 8501eff5..55ebf275 100644 --- a/notes/HTTP.md +++ b/notes/HTTP.md @@ -1,7 +1,7 @@ * [一 、基础概念](#一-基础概念) - * [URI](#uri) * [请求和响应报文](#请求和响应报文) + * [URL](#url) * [二、HTTP 方法](#二http-方法) * [GET](#get) * [HEAD](#head) @@ -58,21 +58,78 @@ # 一 、基础概念 -## URI +## 请求和响应报文 -URI 包含 URL 和 URN。 +客户端发送一个请求报文给服务器,服务器根据请求报文中的信息进行处理,并将处理结果放入响应报文中返回给客户端。 + +请求报文结构: + +- 第一行是包含了请求方法、URL、协议版本; +- 接下来的多行都是请求首部 Header,每个首部都有一个首部名称,以及对应的值。 +- 一个空行用来分隔首部和内容主体 Body +- 最后是请求的内容主体 + +``` +GET http://www.example.com/ HTTP/1.1 +Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.9 +Accept-Encoding: gzip, deflate +Accept-Language: zh-CN,zh;q=0.9,en;q=0.8 +Cache-Control: max-age=0 +Host: www.example.com +If-Modified-Since: Thu, 17 Oct 2019 07:18:26 GMT +If-None-Match: "3147526947+gzip" +Proxy-Connection: keep-alive +Upgrade-Insecure-Requests: 1 +User-Agent: Mozilla/5.0 xxx + +param1=1¶m2=2 +``` + +响应报文结构: + +- 第一行包含协议版本、状态码以及描述,最常见的是 200 OK 表示请求成功了 +- 接下来多行也是首部内容 +- 一个空行分隔首部和内容主体 +- 最后是响应的内容主体 + +``` +HTTP/1.1 200 OK +Age: 529651 +Cache-Control: max-age=604800 +Connection: keep-alive +Content-Encoding: gzip +Content-Length: 648 +Content-Type: text/html; charset=UTF-8 +Date: Mon, 02 Nov 2020 17:53:39 GMT +Etag: "3147526947+ident+gzip" +Expires: Mon, 09 Nov 2020 17:53:39 GMT +Keep-Alive: timeout=4 +Last-Modified: Thu, 17 Oct 2019 07:18:26 GMT +Proxy-Connection: keep-alive +Server: ECS (sjc/16DF) +Vary: Accept-Encoding +X-Cache: HIT + + + + + Example Domain + // 省略... + + + +``` + +## URL + +http 使用 URL( **U** niform **R**esource **L**ocator,统一资源定位符)来定位资源,它可以认为是是 URI(**U**niform **R**esource **I**dentifier,统一资源标识符)的一个子集,URL 在 URI 的基础上增加了定位能力。URI 除了包含 URL 之外,还包含 URN(Uniform Resource Name,统一资源名称),它知识用来定义一个资源的名称,并不具备定位该资源的能力。例如 urn:isbn:0451450523 用来定义一个书籍,但是却没有表示怎么找到这本书。

-## 请求和响应报文 - -### 1. 请求报文 - -

- -### 2. 响应报文 - -

+- [wikipedia:统一资源标志符](https://zh.wikipedia.org/wiki/统一资源标志符) +- [wikipedia: URL](https://en.wikipedia.org/wiki/URL) +- [rfc2616:3.2.2 http URL](https://www.w3.org/Protocols/rfc2616/rfc2616-sec3.html#sec3.2.2) +- [What is the difference between a URI, a URL and a URN?](https://stackoverflow.com/questions/176264/what-is-the-difference-between-a-uri-a-url-and-a-urn) # 二、HTTP 方法 @@ -171,6 +228,8 @@ CONNECT www.example.com:443 HTTP/1.1 通常不会使用 TRACE,并且它容易受到 XST 攻击(Cross-Site Tracing,跨站追踪)。 +- [rfc2616:9 Method Definitions](https://www.w3.org/Protocols/rfc2616/rfc2616-sec9.html) + # 三、HTTP 状态码 服务器返回的 **响应报文** 中第一行为状态行,包含了状态码以及原因短语,用来告知客户端请求的结果。 diff --git a/notes/pics/image-20201103021112251.png b/notes/pics/image-20201103021112251.png new file mode 100644 index 0000000000000000000000000000000000000000..6ac796e40a2601d9a37ace80719dfdcf60f76679 GIT binary patch literal 32810 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 Px(QTP=~3ZBWB>mHH%9%W literal 0 HcmV?d00001