diff --git a/notes/HTTP.md b/notes/HTTP.md index f15399f0..eed61009 100644 --- a/notes/HTTP.md +++ b/notes/HTTP.md @@ -1,4 +1,5 @@ +* [学习资源](#学习资源) * [基础概念](#基础概念) * [Web 基础](#web-基础) * [URL](#url) @@ -8,10 +9,11 @@ * [POST:传输实体主体](#post传输实体主体) * [HEAD:获取报文首部](#head获取报文首部) * [PUT:上传文件](#put上传文件) + * [PATCH:对资源进行部分修改](#patch对资源进行部分修改) * [DELETE:删除文件](#delete删除文件) * [OPTIONS:查询支持的方法](#options查询支持的方法) - * [TRACE:追踪路径](#trace追踪路径) * [CONNECT:要求用隧道协议连接代理](#connect要求用隧道协议连接代理) + * [TRACE:追踪路径](#trace追踪路径) * [HTTP 状态码](#http-状态码) * [2XX 成功](#2xx-成功) * [3XX 重定向](#3xx-重定向) @@ -43,6 +45,11 @@ +# 学习资源 + +- [图解 HTTP](https://pan.baidu.com/s/1M0AHXqG9sP9Bxne6u0JK8A) +- [MDN : HTTP](https://developer.mozilla.org/en-US/docs/Web/HTTP) + # 基础概念 ## Web 基础 @@ -86,13 +93,14 @@ GET 和 POST 的请求都能使用额外的参数,但是 GET 的参数是以 ``` GET /test/demo_form.asp?name1=value1&name2=value2 HTTP/1.1 ``` + ``` POST /test/demo_form.asp HTTP/1.1 Host: w3schools.com name1=value1&name2=value2 ``` -GET 的传参方式相比于 POST 安全性较差,因为 GET 传的参数在 URL 是可见的,可能会泄露私密信息。并且 GET 只支持 ASCII 字符,如果参数为中文则可能会出现乱码,而 POST 支持标准字符集。 +GET 的传参方式相比于 POST 安全性较差,因为 GET 传的参数在 URL 中是可见的,可能会泄露私密信息。并且 GET 只支持 ASCII 字符,如果参数为中文则可能会出现乱码,而 POST 支持标准字符集。 ## HEAD:获取报文首部 @@ -102,33 +110,66 @@ GET 的传参方式相比于 POST 安全性较差,因为 GET 传的参数在 U ## PUT:上传文件 -由于自身不带验证机制,任何人都可以上传文件,因此存在安全性问题,一般 WEB 网站不使用该方法。 +由于自身不带验证机制,任何人都可以上传文件,因此存在安全性问题,一般不使用该方法。 + +```html +PUT /new.html HTTP/1.1 +Host: example.com +Content-type: text/html +Content-length: 16 + +

New File

+``` + +## PATCH:对资源进行部分修改 + +PUT 也可以用于修改资源,但是只能完全替代原始资源,PATCH 允许部分修改。 + +```html +PATCH /file.txt HTTP/1.1 +Host: www.example.com +Content-Type: application/example +If-Match: "e0023aa4e" +Content-Length: 100 + +[description of changes] +``` ## DELETE:删除文件 与 PUT 功能相反,并且同样不带验证机制。 +```html +DELETE /file.html HTTP/1.1 +``` + ## OPTIONS:查询支持的方法 查询指定的 URL 能够支持的方法。 会返回 Allow: GET, POST, HEAD, OPTIONS 这样的内容。 +## CONNECT:要求用隧道协议连接代理 + +要求在于代理服务器通信时建立隧道,使用 SSL(Secure Sokets Layer,安全套接字)和 TLS(Transport Layer Security,传输层安全)协议把通信内容加密后经网络隧道传输。 + +```html +CONNECT www.example.com:443 HTTP/1.1 +``` + +

+ ## TRACE:追踪路径 服务器会将通信路径返回给客户端。 发送请求时,在 Max-Forwards 首部字段中填入数值,每经过一个服务器就会减 1,当数值为 0 时就停止传输。 -TRACE 一般不会使用,并且它容易受到 XST 攻击(Cross-Site Tracing,跨站追踪),因此更不会去使用它。 +通常不会使用 TRACE,并且它容易受到 XST 攻击(Cross-Site Tracing,跨站追踪),因此更不会去使用它。

-## CONNECT:要求用隧道协议连接代理 -主要使用 SSL(Secure Sokets Layer,安全套接字)和 TLS(Transport Layer Security,传输层安全)协议把通信内容加密后经网络隧道传输。 - -

# HTTP 状态码