Geekerstar

《图解 HTTP》知识整理(一)基础概念、HTTP 方法、HTTP 状态码
基础概念Web 基础HTTP(HyperText Transfer Protocol,超文本传输协议)。WWW(W...
扫描右侧二维码阅读全文
13
2018/03

《图解 HTTP》知识整理(一)基础概念、HTTP 方法、HTTP 状态码

基础概念

Web 基础

  • HTTP(HyperText Transfer Protocol,超文本传输协议)。
  • WWW(World Wide Web)的三种技术:HTML、HTTP、URL。
  • RFC(Request for Comments,征求修正意见书),互联网的设计文档。

URL

  • URI(Uniform Resource Indentifier,统一资源标识符)
  • URL(Uniform Resource Locator,统一资源定位符)
  • URN(Uniform Resource Name,统一资源名称),例如 urn:isbn:0-486-27557-4

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

URI

请求和响应报文

请求报文

请求报文

响应报文

响应报文

HTTP 方法

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

GET:获取资源

POST:传输实体主体

POST 主要目的不是获取资源,而是传输实体主体数据。

GET 和 POST 的请求都能使用额外的参数,但是 GET 的参数是以查询字符串出现在 URL中,而 POST 的参数存储在实体主体部分。

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 支持标准字符集。

HEAD:获取报文首部

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

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

PUT:上传文件

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

DELETE:删除文件

与 PUT 功能相反,并且同样不带验证机制。

OPTIONS:查询支持的方法

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

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

TRACE:追踪路径

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

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

TRACE 一般不会使用,并且它容易受到 XST 攻击(Cross-Site Tracing,跨站追踪),因此更不会去使用它。

TRACE

CONNECT:要求用隧道协议连接代理

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

5.jpg

HTTP 状态码

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

状态码类别原因短语
1XXInformational(信息性状态码)接收的请求正在处理
2XXSuccess(成功状态码)请求正常处理完毕
3XXRedirection(重定向状态码)需要进行附加操作以完成请求
4XXClient Error(客户端错误状态码)服务器无法处理请求
5XXServer Error(服务器错误状态码)服务器处理请求出错

2XX 成功

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

3XX 重定向

  • 301 Moved Permanently:永久性重定向
  • 302 Found:临时性重定向
  • 303 See Other
  • 注:虽然 HTTP 协议规定 301、302 状态下重定向时不允许把 POST 方法改成 GET 方法,但是大多数浏览器都会 在 301、302 和 303 状态下的重定向把 POST 方法改成 GET 方法。
  • 304 Not Modified:如果请求报文首部包含一些条件,例如:If-Match,If-ModifiedSince,If-None-Match,If-Range,If-Unmodified-Since,但是不满足条件,则服务器会返回 304 状态码。
  • 307 Temporary Redirect:临时重定向,与 302 的含义类似,但是 307 要求浏览器不会把重定向请求的 POST 方法改成 GET 方法。

4XX 客户端错误

  • 400 Bad Request:请求报文中存在语法错误
  • 401 Unauthorized:该状态码表示发送的请求需要有通过 HTTP 认证(BASIC 认证、DIGEST 认证)的认证信息。如果之前已进行过一次请求,则表示用户认证失败。

400 Bad Request

  • 403 Forbidden:请求被拒绝,服务器端没有必要给出拒绝的详细理由。
  • 404 Not Found

5XX 服务器错误

  • 500 Internal Server Error:服务器正在执行请求时发生错误
  • 503 Service Unavilable:该状态码表明服务器暂时处于超负载或正在进行停机维护,现在无法处理请求。

感谢

感谢CyC2018大神的总结。


如果您发现了文章有任何错误欢迎指正,有任何意见或建议,或者有疑问需要我提供帮助,也欢迎在下面留言,只需输入昵称+邮箱即可,网站或博客可选填。对于所有留言内容我会及时回复,非常期待与大家的交流![/scode]

版权声明:本文(除特殊标注外)为原创文章,版权归 Geekerstar 所有。

本文链接:http://www.geekerstar.com/technology/485.html

除了有特殊标注文章外欢迎转载,但请务必标明出处,格式如上,谢谢合作。

最后修改:2018 年 03 月 13 日 05 : 01 PM
如果觉得我的文章对你有用,请随意赞赏

发表评论