• HTTP简介(状态码)


    1.HTTP简介:

    HTTP是一个客户端终端(用户)和服务器端(网站)请求和应答的标准(TCP)。通过使用Web浏览器、网络爬虫或者其它的工具,客户端发起一个HTTP请求到服务器上指定端口(默认端口为80)。我们称这个客户端为用户代理程序(user agent)。应答的服务器上存储着一些资源,比如HTML文件和图像。我们称这个应答服务器为源服务器(origin server)。在用户代理和源服务器中间可能存在多个“中间层”,比如代理服务器网关或者隧道(tunnel)。

    尽管TCP/IP协议是互联网上最流行的应用,HTTP协议中,并没有规定必须使用它或它支持的层。事实上,HTTP可以在任何互联网协议上,或其他网络上实现。HTTP假定其下层协议提供可靠的传输。因此,任何能够提供这种保证的协议都可以被其使用。因此也就是其在TCP/IP协议族使用TCP作为其传输层。

    通常,由HTTP客户端发起一个请求,创建一个到服务器指定端口(默认是80端口)的TCP连接。HTTP服务器则在那个端口监听客户端的请求。一旦收到请求,服务器会向客户端返回一个状态,比如"HTTP/1.1 200 OK",以及返回的内容,如请求的文件、错误消息、或者其它信息。

    2.HTTP协议例子:

    下面是一个HTTP客户端与服务器之间会话的例子,运行于www.google.com,端口80

    客户端请求:

    GET / HTTP/1.1
    Host: www.google.com

    (末尾有一个空行。第一行指定方法、资源路径、协议版本;第二行是在1.1版里必带的一个header作用指定主机)

    服务器应答:

    HTTP/1.1 200 OK
    Content-Length: 3059
    Server: GWS/2.0
    Date: Sat, 11 Jan 2003 02:44:04 GMT
    Content-Type: text/html
    Cache-control: private
    Set-Cookie: PREF=ID=73d4aef52e57bae9:TM=1042253044:LM=1042253044:S=SMCc_HRPCQiqy
    X9j; expires=Sun, 17-Jan-2038 19:14:07 GMT; path=/; domain=.google.com
    Connection: keep-alive

    (紧跟着一个空行,并且由HTML格式的文本组成了Google的主页)

    在HTTP1.0,单一TCP连接内仅执行一个“客户端发送请求—服务器发送应答”周期,之后释放TCP连接。在HTTP1.1优化支持持续活跃连接:客户端连续多次发送请求、接收应答;批量多请求时,同一TCP连接在活跃(Keep-Live)间期内复用,避免重复TCP初始握手活动,减少网络负荷和响应周期。此外支持应答到达前继续发送请求(通常是两个),称为“流线化”(stream)。

    3.HTTP状态码

    所有HTTP响应的第一行都是状态行,依次是当前HTTP版本号,3位数字组成的状态代码,以及描述状态的短语,彼此由空格分隔。

    状态代码的第一个数字代表当前响应的类型:

    • 1xx消息——请求已被服务器接收,继续处理
    • 2xx成功——请求已成功被服务器接收、理解、并接受
    • 3xx重定向——需要后续操作才能完成这一请求
    • 4xx请求错误——请求含有词法错误或者无法被执行
    • 5xx服务器错误——服务器在处理某个正确请求时发生错误

    4.HTTP状态码(详细中文解释,可参考WIKI:https://zh.wikipedia.org/wiki/HTTP%E7%8A%B6%E6%80%81%E7%A0%81

     1 Status Code Definitions
     2     Informational 1xx
     3         100 Continue
     4         101 Switching Protocols
     5     Successful 2xx
     6         200 OK
     7         201 Created
     8         202 Accepted
     9         203 Non-Authoritative Information
    10         204 No Content
    11         205 Reset Content
    12         206 Partial Content
    13     Redirection 3xx
    14         300 Multiple Choices
    15         301 Moved Permanently
    16         302 Found
    17         303 See Other
    18         304 Not Modified
    19         305 Use Proxy
    20         306 (Unused)
    21         307 Temporary Redirect
    22     Client Error 4xx
    23         400 Bad Request
    24         401 Unauthorized
    25         402 Payment Required
    26         403 Forbidden
    27         404 Not Found
    28         405 Method Not Allowed
    29         406 Not Acceptable
    30         407 Proxy Authentication Required
    31         408 Request Timeout
    32         409 Conflict
    33         410 Gone
    34         411 Length Required
    35         412 Precondition Failed
    36         413 Request Entity Too Large
    37         414 Request-URI Too Long
    38         415 Unsupported Media Type
    39         416 Requested Range Not Satisfiable
    40         417 Expectation Failed
    41     Server Error 5xx
    42         500 Internal Server Error
    43         501 Not Implemented
    44         502 Bad Gateway
    45         503 Service Unavailable
    46         504 Gateway Timeout
    47         505 HTTP Version Not Supported

    参考资料:

    1.Hypertext Transfer Protocol -- HTTP/1.1 RFC https://tools.ietf.org/html/rfc2616

    2.HTTP状态码 https://zh.wikipedia.org/wiki/HTTP%E7%8A%B6%E6%80%81%E7%A0%81

    3.超文本传输协议 https://zh.wikipedia.org/wiki/%E8%B6%85%E6%96%87%E6%9C%AC%E4%BC%A0%E8%BE%93%E5%8D%8F%E8%AE%AE

  • 相关阅读:
    摘记
    【题解】网格 & Single Cut of Failure(trick:答案上界)
    题解 CF1404C 【Fixed Point Removal】
    Linux IO模型知识梳理
    Java IO模型知识梳理
    如何回答什么是线程安全?
    MySQL主从复制与备份
    MySQL的高性能索引策略
    CAS(乐观锁)的原理解析
    Java虚拟机的类加载机制
  • 原文地址:https://www.cnblogs.com/creasylai19/p/4910135.html
Copyright © 2020-2023  润新知