X

HTTP/1.1阅读之响应

与上一章对应,一个响应信息的包含部分如下:

 Response      =        Status-Line               ; Section 6.1
                       *(( general-header        ; Section 4.5
                        | response-header        ; Section 6.2
                        | entity-header ) CRLF)  ; Section 7.1
                       CRLF
                       [ message-body ]          ; Section 7.2
其中比较重要的是Status-line行,他由以下部分组成:
Status-Line = HTTP-Version SP Status-Code SP Reason-Phrase CRLF

以请求行不同的是,他把version提到第一个了,接着是Status的Code信息,最后是一个原因解释。Code信息是给程序看得,Reason是给人看的。
状态码一般由一个三位数来决定的,其中,第一位数字决定了错误类型,一共有5种。
1xx表示请求正在进行中
2xx表示请求被接受了
3xx表示请求被重新定向了
4xx表示请求有问题(用户发送的请求有问题)
例如:404表示用户请求了一个不可用的资源
     上一章的405,表示用户请求了一个不被允许的方法,但是501就表示,这个方法,服务器没有被实现,对
5xx就表示服务器端的错误。
具体的如下:
      Status-Code    =
            "100"  ; Section 10.1.1: Continue
          | "101"  ; Section 10.1.2: Switching Protocols
          | "200"  ; Section 10.2.1: OK
          | "201"  ; Section 10.2.2: Created
          | "202"  ; Section 10.2.3: Accepted
          | "203"  ; Section 10.2.4: Non-Authoritative Information
          | "204"  ; Section 10.2.5: No Content
          | "205"  ; Section 10.2.6: Reset Content
          | "206"  ; Section 10.2.7: Partial Content
          | "300"  ; Section 10.3.1: Multiple Choices
          | "301"  ; Section 10.3.2: Moved Permanently
          | "302"  ; Section 10.3.3: Found
          | "303"  ; Section 10.3.4: See Other
          | "304"  ; Section 10.3.5: Not Modified
          | "305"  ; Section 10.3.6: Use Proxy
          | "307"  ; Section 10.3.8: Temporary Redirect
          | "400"  ; Section 10.4.1: Bad Request
          | "401"  ; Section 10.4.2: Unauthorized
          | "402"  ; Section 10.4.3: Payment Required
          | "403"  ; Section 10.4.4: Forbidden
          | "404"  ; Section 10.4.5: Not Found
          | "405"  ; Section 10.4.6: Method Not Allowed
          | "406"  ; Section 10.4.7: Not Acceptable
          | "407"  ; Section 10.4.8: Proxy Authentication Required
          | "408"  ; Section 10.4.9: Request Time-out
          | "409"  ; Section 10.4.10: Conflict
          | "410"  ; Section 10.4.11: Gone
          | "411"  ; Section 10.4.12: Length Required
          | "412"  ; Section 10.4.13: Precondition Failed
          | "413"  ; Section 10.4.14: Request Entity Too Large
          | "414"  ; Section 10.4.15: Request-URI Too Large
          | "415"  ; Section 10.4.16: Unsupported Media Type
          | "416"  ; Section 10.4.17: Requested range not satisfiable
          | "417"  ; Section 10.4.18: Expectation Failed
          | "500"  ; Section 10.5.1: Internal Server Error
          | "501"  ; Section 10.5.2: Not Implemented
          | "502"  ; Section 10.5.3: Bad Gateway
          | "503"  ; Section 10.5.4: Service Unavailable
          | "504"  ; Section 10.5.5: Gateway Time-out
          | "505"  ; Section 10.5.6: HTTP Version not supported
          | extension-code
      extension-code = 3DIGIT
      Reason-Phrase  = *<TEXT, excluding CR, LF>
还不够!! 这些还能够根据需要而被扩展,没准HTTP/1.2又搞出一堆其他的什么出来。然后可是,服务器端并不需要理解所有的Status-Code,尽管,
我们希望如此,如果一个Status-code未被理解,将被解释成x00,例如你来一个532,根本没这玩意儿,将被解释成500.
同样一个响应信息的头域,允许服务器返回附加信息给用户代理,他应该由以下内容组成
       response-header = Accept-Ranges           ; Section 14.5
                       | Age                     ; Section 14.6
                       | ETag                    ; Section 14.19
                       | Location                ; Section 14.30
                       | Proxy-Authenticate      ; Section 14.33
                       | Retry-After             ; Section 14.37
                       | Server                  ; Section 14.38
                       | Vary                    ; Section 14.44
                       | WWW-Authenticate        ; Section 14.47
当然,一个未被识别的响应头域,将被看错信息头域。

	
龙安_任天兵: 不忘初心,方得始终!