logo  

跟我一起读RFC

跟我一起读RFC
作者: 陈安廉

摘要:软件开发进阶系列


4.1 消息类型(Message Types)


2020-12-02 13:50:17

HTTP 消息由从客户到服务器的请求消息和从服务器到客户的响应消息两部分组成.  

HTTP-message   = Request | Response     ; HTTP/1.1 messages

请求(第 5 节)和响应(第 6 节)消息利用 RFC 822[9]定义的常用消息的格式,这种消息格式是用于传输实体(消息的负载)。两种类型的消息都由一个开始行(start-line),零个或更多个头域(经常被称作“头”),一个指示头域结束的空行(也就是以一个 CRLF 为前缀的什么也没有的行),最后一个可有可无的消息主体(message-body)组成。

        generic-message = start-line
                          *(message-header CRLF)
                          CRLF
                          [ message-body ]
        start-line      = Request-Line | Status-Line


为了健壮性,服务器应该忽略任意请求行(Request-Line)前面的空行。换句话说,如果服务器开始读消息流的时候发现了一个 CRLF,它应该忽略这个 CRLF。 一般一个存在问题的 HTTP/1.0 客户端会在 POST 请求消息之后添加额外的 CRLF。为了重新声明被 BNF 明确禁止的行为,一个 HTTP/1.1 客户端不能在请求前和请求后附加一些不必要的CRLF。