根据Github总结。 包括:URL、请求和响应报文、HTTP方法、HTTP状态码、HTTP首部、具体应用、HTTPs、HTTP2.0/1.1特性、GET和POST比较等等。

一 、基础概念

URL

URI 包含 URL 和 URN,目前 WEB 只有 URL 比较流行,所以见到的基本都是 URL。

  • URI(Uniform Resource Identifier,统一资源标识符)
  • URL(Uniform Resource Locator,统一资源定位符)
  • URN(Uniform Resource Name,统一资源名称)

https://github.com/CyC2018/CS-Notes/raw/master/pics/urlnuri.jpg

请求和响应报文

1. 请求报文

https://github.com/CyC2018/CS-Notes/raw/master/pics/HTTP_RequestMessageExample.png

2. 响应报文

https://github.com/CyC2018/CS-Notes/raw/master/pics/HTTP_ResponseMessageExample.png

二、HTTP 方法

客户端发送的 请求报文 第一行为请求行,包含了方法字段。

GET

获取资源

当前网络请求中,绝大部分使用的是 GET 方法。

HEAD

获取报文首部

和 GET 方法一样,但是不返回报文实体主体部分。

主要用于确认 URL 的有效性以及资源更新的日期时间等。

POST

传输实体主体

POST 主要用来传输数据,而 GET 主要用来获取资源。

更多 POST 与 GET 的比较请见第九章。

PUT

上传文件

由于自身不带验证机制,任何人都可以上传文件,因此存在安全性问题,一般不使用该方法。

PUT /new.html HTTP/1.1
Host: example.com
Content-type: text/html
Content-length: 16

<p>New File</p>

PATCH

对资源进行部分修改

PUT 也可以用于修改资源,但是只能完全替代原始资源,PATCH 允许部分修改。

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 功能相反,并且同样不带验证机制。

DELETE /file.html HTTP/1.1

OPTIONS

查询支持的方法

查询指定的 URL 能够支持的方法。

会返回 Allow: GET, POST, HEAD, OPTIONS 这样的内容。

CONNECT

要求在与代理服务器通信时建立隧道

使用 SSL(Secure Sockets Layer,安全套接层)和 TLS(Transport Layer Security,传输层安全)协议把通信内容加密后经网络隧道传输。

CONNECT www.example.com:443 HTTP/1.1

https://github.com/CyC2018/CS-Notes/raw/master/pics/dc00f70e-c5c8-4d20-baf1-2d70014a97e3.jpg

TRACE

追踪路径

服务器会将通信路径返回给客户端。

发送请求时,在 Max-Forwards 首部字段中填入数值,每经过一个服务器就会减 1,当数值为 0 时就停止传输。

通常不会使用 TRACE,并且它容易受到 XST 攻击(Cross-Site Tracing,跨站追踪)。

三、HTTP 状态码

服务器返回的 响应报文 中第一行为状态行,包含了状态码以及原因短语,用来告知客户端请求的结果。

Untitled

1XX 信息

  • 100 Continue :表明到目前为止都很正常,客户端可以继续发送请求或者忽略这个响应。

2XX 成功

  • 200 OK
  • 204 No Content :请求已经成功处理,但是返回的响应报文不包含实体的主体部分。一般在只需要从客户端往服务器发送信息,而不需要返回数据时使用。
  • 206 Partial Content :表示客户端进行了范围请求,响应报文包含由 Content-Range 指定范围的实体内容。

3XX 重定向

  • 301 Moved Permanently :永久性重定向
  • 302 Found :临时性重定向
  • 303 See Other :和 302 有着相同的功能,但是 303 明确要求客户端应该采用 GET 方法获取资源。
爱女友,爱生活
0
0
发表留言

文章
HTTP学习
根据Github总结。 包括:URL、请求和响应报文、HTTP方法、HTTP状态码、HTTP首部、具体应用、HTTPs、HTTP2.0/1....
扫描右侧二维码继续阅读
October 26, 2018
zlatanera
blogger
王誉睿
我是网站主理人Jackie·Wong,95后。热爱读书、电影和数码,喜欢旅游,对未知事物拥有无限的好奇心,脑洞随时大开。
我的其他网站:

Jackieの生活觀察(Notion主页)
逝去的武林
BBtime

此网站用RSSHub插件可以添加到RSS阅读器中方便查看哦

统计
文章:157 篇
分类:4 个
评论:26 条
运行时长:1年351天
by yoniu.
zlatanera