HTTP简介:
HTTP协议是Hyper Text Transfer Protocol(超文本传输协议)的缩写,是用于从万维网(WWW:World Wide Web)服务器传输超文本到本地浏览器的传输协议。
HTTP是一个基于TCP/IP通信协议来传输数据(HTML文件,图片文件,查询结果等)。
HTTP工作原理:
HTTP协议工作于客户端-服务端架构上。浏览器作为HTTP客户端通过URL向HTTP服务端即WEB服务器发送所有请求。
Web服务器有:Apache服务器,IIS服务器(Internet Information Services)等。
Web服务器根据接受到的请求,向客户端发送相应信息。
HTTP默认端口号是80,但是你也可以改为8080或者其他端口。
HTTP三点注意事项:

  1. HTTP是无连接:无连接的含义是限制每次链接值处理一个请求。服务器处理完客户的请求,并收到客户的应答后,即断开连接。采用这种方式可以节省传输时间。
  2. HTTP是媒体独立的:这意味着,只要客户端和服务器知道如何处理数据内容,任何类型的数据都可以通过HTTP发送。客户端以及服务器指定使用适合的MIME-type内容类型。
  3. HTTP是无状态:HTTP协议是无状态协议。无状态是指协议对于事务处理没有记忆能力。缺少状态意味着如果后续处理需要前面的信息,则它必须重传,这样可能导致每次连接传输的数据量增大。另一方面,在服务器不需要先前信息时它的应答就较快。
    以下图展示了HTTP协议通讯流程:
    HTTP和HTTP状态码

HTTP状态码:
HTTP状态码时用以表示网页服务器超文本传输协议相应状态的3位数字代码。它由RFC2616规范定义的,并得到RFC 2518,RFC 2817,RFC 2295,RFC 2774与RFC 4918等规范扩展。所有状态码的第一个字代表了响应的五种状态之一。所示的消息短语时典型的,但是可以提供任何可读取的替代方案。除非另有说明,状态码时HTTP/1.1标准(RFC 7231)的一部分。
HTTP状态码的官方注册表由互联网号码分配局维护。
消息:
这一类型的状态码,代表请求已经被接受,需要继续处理。这类响应是临时响应,只包含状态行和某些可选的响应头信息,并以空行结束。
100 Contiuce:
客户端应向继续发送请求。这个临时相应是用来通知客户端他的部分请求已经被服务器接收,且仍未拒绝。客户端应当继续发送请求的剩余部分,或者如果请求已经完成,忽略这个相应。服务器必须在请求完成后向客户端发送一个最终响应。
101 Switching Protocols
服务器已经理解了客户端的请求,并将通过Upgrade消息头通知客户端采用不同的协议来完成这个请求。在发送完这个响应最后的空行后,服务器将会切换到在Upgrade消息头中定义的那些协议。
只有在切换新的协议更有好处的时候才应该采取类似的措施。例如:切换到新的HTTP版本比就版本更有优势,或者切换到一个实时且同步的协议以传送利用此类特性的资源。
102 Processing
由WebDAV(RFC 2518)扩展的状态码,代表处理将被继续执行。
成功:
这一类型的状态码,代表请求已成功被服务器接收,理解,并接受。
200 OK
请求已成功,请求所希望的响应头或数据体将随此响应返回。出现此状态码是表示正常状态。
201 Created
请求已经被实现,而且有一个新的资源已经依据请求的需要建立,且其URI已经随Location头信息返回。假如需要资源无法及时建立的话,应当返回“202 Accepted”
202 Accepted
服务器已经接受请求,但尚未处理。正如它可能被拒绝一样,最终该请求可能会也可能不会被执行。在异步操作的场合下,没有比发送这个状态码更方便的做法了。
203 Non-Authoritative Information
服务器已经成功处理了请求,但返回的实体头部元信息不是在原始服务器上有效的确定集合,而是来自本地或者第三方的拷贝。但前的信息可能是原始版本的子集或者超集。
204 No Content
服务器成功处理了请求,但不需要返回任何实体内容,并且希望返回更新了的元信息。响应可能通过实体头部的形式,返回新的或者更新后的元信息。如果存在这些头部信息,则应当与所请求的变量相呼应。
如果客户端是浏览器的话,那么用户浏览器应当保留发送了该请求的页面,而不产生任何文档视图上的变化,即使按照规范新的或者更新后的元信息应当被应用到用户浏览器活动试图中的文档。
205 Reset Content
服务器成功处理了请求,且没有返回任何内容。但是与204响应不同,返回此状态码的响应要求请求者重置文档视图。响应主要是被用于接受用户输入后,立即重置表单,以便用户能够轻松地开始另一次输入。
206 Partial Content
服务器已经成功处理了部分GET请求。
207 Multi-Status
由WebDAV扩展地状态码,代表之后地消息体将是一个XML消息,并且可能按照之前子请求数量地不同,包含一系类独立地响应代码。
重定向:
这类状态码代表需要客户采取进一步地操作才能完成请求。通常,这些状态码用来重定向,后续地请求地址(重定向目标)在本次响应地Location域中指明。
300 Multiple Choices
被请求地资源有一系列可供选择地回馈信息,每个都有自己特定地地址和浏览器驱动地商议信息。用户或者浏览器能够自行选择一个首选地址进行重定向。
301 Move Temporarily
请求的资源临时从不同的URI响应请求。由于这样的重定向是临时的,客户端应当继续向原有地址发送以后的请求。只有在Cache-Control或Expires中进行了指定的情况下,这个响应才是可缓存的。
303 Not Modified
如果客户端发送一个带条件的GET请求且该请求已被允许,而文档的内容(自上次访问以来或者根据请求的条件)并么有改变,则服务器应当返回这个状态码。304响应禁止包含消息体,因此始终以消息头后的第一个空行结尾。
305 Use Proxy
被请求的资源必须通过指定的代理才能被访问。Location域中将给出指定的代理所在的URI信息,接收者需要重复发一个单独的请求,通过这个代理才能访问相应的资源股。只有原始服务器才能建立305响应。
307 Temporary Redirect
请求的资源临时从不同的URI响应请求。
请求错误:
这类的状态码代表了客户端看起来可能发生了错误,妨碍了服务器的处理。除非响应的是一个HEAD请求,否则服务器就应该返回一个解释当前错误状况的实体,以及这是临时的还是永久性的状态。这类状态码适用于任何请求方法。浏览器应当向用户显示任何包含在此类错误响应中的实体内容。
400 Bad Request
1.语义有误,当前请求无法被服务器理解。除非进行修改,否则客户端不应该重复提交这个请求。
2.请求参数有误。
401 Unauthorized
当前请求需要用户验证。
402 Payment Required
该状态码是为了将来可能的需求而预留的。
403 Forbidden
服务器已经理解请求,但是拒绝执行它。鱼401响应不同的是,身份验证并不能提供任何帮助,而且这个请求也不应该被重复提交。
404 Not Found
请求失败,请求所希望得到的资源未被在服务器上发现。出现这个错误的最有可能的原因是服务器没有这个页面。
405 Method Mot Allowed
请求行中致电给额请求方法不能被用于请求相应的资源。该响应必须返回一个Allow头信息用以表示当前资源能够接受的请求方法的列表。
406 Not Acceptable
请求的资源的内容特性无法满足请求头中的条件,因而无法生成响应实体。
407 Proxy Authentication Required
于401响应类似,只不过客户端必须在代理服务器上进行身份验证。
408 Request Timeout
请求超时。客户端没有在服务器预备等待的时间内完成一个请求的发送。
409 Conflict
由于和被请求的资源的当前状态之间存在冲突,请求无法完成。
410 Gone
被请求的资源在服务器上已经不再可用,而且没有任何已知的转发地址。
411 Length Required
服务器拒绝在没有定义 Content-Length 头的情况下接受请求。在添加了表明请求消息体长度的有效 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
如果请求中包含了 Range 请求头,并且 Range 中指定的任何数据范围都与当前资源的可用范围不重合,同时请求中又没有定义 If-Range 请求头,那么服务器就应当返回416状态码。
417 Expectation Failed
在请求头 Expect 中指定的预期内容无法被服务器满足,或者这个服务器是一个代理服务器,它有明显的证据证明在当前路由的下一个节点上,Expect 的内容无法被满足。
421 Misdirected Request
请求被指向到无法生成响应的服务器(比如由于连接重复使用)
422 Unprocessable Entity
请求格式正确,但是由于含有语义错误,无法响应。
423 Locked
当前资源被锁定
424 Failed Dependency
由于之前的某个请求发生的错误,导致当前请求失败。
425 Too Early
状态码 425 Too Early 代表服务器不愿意冒风险来处理该请求,原因是处理该请求可能会被“重放”,从而造成潜在的重放攻击。
426 Upgrade Required
客户端应当切换到TLS/1.0。
449 Retry With
由微软扩展,代表请求应当在执行完适当的操作后进行重试。
451 Unavailable For Legal Reasons
该请求因法律原因不可用。
服务器错误:
这类状态码代表了服务器在处理请求的过程中有错误或者异常状态发生,也有可能是服务器意识到以当前的软硬件资源无法完成对请求的处理。除非这是一个HEAD 请求,否则服务器应当包含一个解释当前错误状态以及这个状况是临时的还是永久的解释信息实体。浏览器应当向用户展示任何在当前响应中被包含的实体。
这些状态码适用于任何响应方法。
500 Internal Server Error
服务器遇到了一个未曾预料的状况,导致了它无法完成对请求的处理。一般来说,这个问题都会在服务器端的源代码出现错误时出现。
501 Not Implemented
服务器不支持当前请求所需要的某个功能。当服务器无法识别请求的方法,并且无法支持其对任何资源的请求。
502 Bad Gateway
作为网关或者代理工作的服务器尝试执行请求时,从上游服务器接收到无效的响应。
503 Service Unavailable
由于临时的服务器维护或者过载,服务器当前无法处理请求。这个状况是临时的,并且将在一段时间以后恢复。如果能够预计延迟时间,那么响应中可以包含一个 Retry-After 头用以标明这个延迟时间。如果没有给出这个 Retry-After 信息,那么客户端应当以处理500响应的方式处理它。
504 Gateway Timeout
作为网关或者代理工作的服务器尝试执行请求时,未能及时从上游服务器(URI标识出的服务器,例如HTTP、FTP、LDAP)或者辅助服务器(例如DNS)收到响应。
505 HTTP Version Not Supported
服务器不支持,或者拒绝支持在请求中使用的 HTTP 版本。这暗示着服务器不能或不愿使用与客户端相同的版本。响应中应当包含一个描述了为何版本不被支持以及服务器支持哪些协议的实体。
506 Variant Also Negotiates
由《透明内容协商协议》(RFC 2295)扩展,代表服务器存在内部配置错误:被请求的协商变元资源被配置为在透明内容协商中使用自己,因此在一个协商处理中不是一个合适的重点。
507 Insufficient Storage
服务器无法存储完成请求所必须的内容。这个状况被认为是临时的。WebDAV (RFC 4918)
509 Bandwidth Limit Exceeded
服务器达到带宽限制。这不是一个官方的状态码,但是仍被广泛使用。
510 Not Extended
获取资源所需要的策略并没有被满足。(RFC 2774)
600 Unparseable Response Headers
源站没有返回响应头部,只返回实体内容。

相关文章:

  • 2021-12-25
  • 2021-08-20
猜你喜欢
  • 2022-01-24
  • 2021-09-25
  • 2021-07-19
  • 2021-11-17
  • 2021-04-17
  • 2021-07-07
相关资源
相似解决方案