Parksi

HTTP基础 科普

2020-04-18 · 9 min read
科普

HTTP协议是常用的协议之一,也是网上冲浪的主要协议,本章让我们一同学习。

简介

HyperText Transfer Protocol(超文本传输协议,缩写HTTP),处在应用层,是万维网的基础。
最初设计HTTP是的目的是提供一种发布和接收HTML页面的方法。
通过HTTP或者HTTPS协议请求的资源由统一资源标识符(Uniform Resource Identifiers,URI)来标识。

组成

  • HTTP是一个客户端(用户)与服务端(网站)之间的请求与应答标准,通常使用TCP协议
  • 默认端口是80,HTTPS是443

请求方法

请求(Request),客户端向服务端发出请求,要求服务端返回数据(或/且执行动作)

GET

  • 向指定的资源发出“显示”请求。GET方法只能读取数据,浏览器直接访问即是GET请求
  • 向指定的资源发出“显示资源信息”请求
  • 与GET相同,但不会返回正文

POST

  • 向指定资源提交数据,请求服务器处理数据
  • 表单数据被编码存放在HTTP请求的body里

PUT

  • 向指定资源位置上传最新内容

DELETE

  • 请求服务器删除指定资源

返回状态码

状态码 意义
1XX 消息已处理,需要据需处理
2XX 请求成功
3XX 重定向
4XX 客户端错误
5XX 服务器错误

1XX

这一类型的状态码,代表请求已被接受,需要继续处理。这类响应是临时响应,只包含状态行和某些可选的响应头信息,并以空行结束。由于HTTP/1.0协议中没有定义任何1xx状态码,所以除非在某些试验条件下,服务器禁止向此类客户端发送1xx响应。 这些状态码代表的响应都是信息性的,标示客户应该采取的其他行动。

状态码 英文 描述
100 Continue 服务器已经接收到请求头,并且客户端应继续发送请求主体
101 Switching Protocols 服务器已经理解了客户端的请求,并将通过Upgrade消息头通知客户端采用不同的协议来完成这个请求。
101 Processing WebDAV请求可能包含许多涉及文件操作的子请求,需要很长时间才能完成请求。

2XX

状态码 英文 描述
200 OK 请求已成功
201 Created 请求已经被实现
202 Accepted 服务器已接受请求,但尚未处理。
203 Non-Authoritative Information 服务器是一个转换代理服务器
204 No Content 服务器成功处理了请求,没有返回任何内容。
205 Reset Content 服务器成功处理了请求,但没有返回任何内容。
206 Partial Content 服务器已经成功处理了部分GET请求。
207 Multi-Status 之后的消息体将是一个XML消息
208 Already Reported DAV绑定的成员已经在(多状态)响应之前的部分被列举,且未被再次包含。
226 IM Used 服务器已经满足了对资源的请求,对实体请求的一个或多个实体操作的结果表示。

3XX

状态码 英文 描述
300 Multiple Choices 被请求的资源有一系列可供选择的回馈信息,每个都有自己特定的地址和浏览器驱动的商议信息。用户或浏览器能够自行选择一个首选的地址进行重定向
301 Moved Permanently 被请求的资源已永久移动到新位置
302 Found 要求客户端执行临时重定向
303 See Other 对应当前请求的响应可以在另一个URI上被找到
304 Not Modified 表示资源在由请求头中的If-Modified-Since或If-None-Match参数指定的这一版本之后,未曾被修改。在这种情况下,由于客户端仍然具有以前下载的副本,因此不需要重新传输资源。
305 Use Proxy 被请求的资源必须通过指定的代理才能被访问
306 Switch Proxy 后续请求应使用指定的代理(已停用)
307 Temporary Redirect 在这种情况下,请求应该与另一个URI重复,但后续的请求应仍使用原始的URI。 与302相反,当重新发出原始请求时,不允许更改请求方法。
308 Permanent Redirect 请求和所有将来的请求应该使用另一个URI重复。

4XX

状态码 英文 描述
400 Bad Request 明显的客户端错误
401 Unauthorized 用户没有必要的凭据
402 Payment Required 保留使用
403 Forbidden 服务器已经理解请求,但是拒绝执行它。
404 Not Found 请求所希望得到的资源未被在服务器上发现,最常见的错误
405 Method Not Allowed 请求行中指定的请求方法不能被用于请求相应的资源。
406 Not Acceptable 请求的资源的内容特性无法满足请求头中的条件,因而无法生成响应实体,该请求不可接受。
407 Proxy Authentication Required 客户端必须在代理服务器上进行身份验证
408 Request Timeout 请求超时
409 Conflict 表示因为请求存在冲突无法处理该请求
410 Gone 表示所请求的资源不再可用
411 Length Required 服务器拒绝在没有定义Content-Length头的情况下接受请求
412 Precondition Failed 服务器在验证在请求的头字段中给出先决条件时,没能满足其中的一个或多个。
413 Request Entity Too Large 服务器拒绝处理当前请求,因为该请求提交的实体数据大小超过了服务器愿意或者能够处理的范围
414 Request-URI Too Long 请求的URI长度超过了服务器能够解释的长度
415 Unsupported Media Type 请求中提交的互联网媒体类型并不是服务器中所支持的格式
416 Requested Range Not Satisfiable 户端已经要求文件的一部分,但服务器不能提供该部分
417 Expectation Failed 在请求头Expect中指定的预期内容无法被服务器满足
418 I'm a teapot 愚人节彩蛋
421 Misdirected Request 该请求针对的是无法产生响应的服务器
422 Unprocessable Entity 请求格式正确,但是由于含有语义错误,无法响应。
423 Locked 当前资源被锁定
424 Failed Dependency 由于之前的某个请求发生的错误,导致当前请求失败
425 Too Early 服务器拒绝处理在Early Data中的请求
426 Upgrade Required 客户端应切换到Upgrade头字段中给出的不同协议
428 Precondition Required 原服务器要求该请求满足一定条件
429 Too Many Requests 用户在给定的时间内发送了太多的请求
431 Request Header Fields Too Large 服务器不愿处理请求,因为一个或多个头字段过大。
451 Unavailable For Legal Reasons 该访问因法律的要求而被拒绝

非官方扩充

状态码 英文 描述
420 Enhance Your Caim Twitter Search与Trends API在客户端被限速的情况下返回
444 No Response Nginx上HTTP服务器扩展。服务器不向客户端返回任何信息,并关闭连接
450 Blocked by Windows Parental Controls 这是一个由Windows家庭控制(Microsoft)HTTP阻止的450状态代码的示例,用于信息和测试
494 Request Header Too Large 在错误代码431提出之前Nginx上使用的扩展HTTP代码

5XX

状态码 英文 描述
500 Internal Server Error 通用错误消息
501 Not Implemented 服务器不支持当前请求所需要的某个功能
502 Bad Gateway 作为网关或者代理工作的服务器尝试执行请求时,从上游服务器接收到无效的响应
503 Service Unavailable 由于临时的服务器维护或者过载,服务器当前无法处理请求
504 Gateway Timeout 作为网关或者代理工作的服务器尝试执行请求时,未能及时从上游服务器收到响应
505 HTTP Version Not Supported 服务器不支持,或者拒绝支持在请求中使用的HTTP版本
506 Variant Also Negotiates 代表服务器存在内部配置错误
507 Insufficient Storage 服务器无法存储完成请求所必须的内容
508 Loop Detected 服务器在处理请求时陷入死循环
510 Not Extended 获取资源所需要的策略并没有被满足
511 Network Authentication Required 客户端需要进行身份验证才能获得网络访问权限

总结

有了上面的学习和参考表,你已经能了解到HTTP的请求与回复,能够根据错误码检查错误。

CC-BY-NC By Parksi