【摘要】:前面谈到了HTTP 协议是如何工作的,但仅仅从宏观层面上谈,还没有涉及其具体的内容,比如客户端浏览器发送的请求信息是什么样的,Web 服务器返回的响应信息又是什么样的,接下来将介绍这些与HTTP 协议相关的内容。GET 指请求方法;GET 后面的“/”表示当前请求站点的根路径;“HTTP/1.1”指定使用的是HTTP 协议及其版本。在HTTP/1.1 协议中,所有的请求头,除Host 外,都是可选的。
前面谈到了HTTP 协议是如何工作的,但仅仅从宏观层面上谈,还没有涉及其具体的内容,比如客户端浏览器发送的请求信息是什么样的,Web 服务器返回的响应信息又是什么样的,接下来将介绍这些与HTTP 协议相关的内容。
1.客户端请求消息
例如,在百度中搜索“google”,然后通过百度提供的链接进入谷歌首页,将发送的请求信息如下:
发出的请求信息包括以下几个:
(1)请求行,例如“GET / HTTP/1.1”。GET 指请求方法;GET 后面的“/”表示当前请求站点的根路径;“HTTP/1.1”指定使用的是HTTP 协议及其版本。以上三者以空格隔开。
(2)(请求)头,例如Accept 头提供了有关客户端可以接受的MIME 类型(如image/gif)列表。“Accept-Language: zh-cn”表示客户端支持的语言为中文;Referer 头提供了当前请求来自哪个链接,这里是通过百度网页而来;User-Agent 头包含了发出请求的用户信息,比如浏览器的版本;Host 头包含了访问的主机名;Connection 头提供了当前连接的状态等。
(3)空行。请注意,此空行不能省略,也不能包含其余空格。
(4)可选的消息体,比如上例的BDLFONT=0。
请求行和标题必须以回车换行作为结尾。空行内只能有回车换行而无其他空格。在HTTP/1.1 协议中,所有的请求头,除Host 外,都是可选的。
2.服务器端响应消息
例如上例中谷歌服务器响应到客户端的消息为:
接收的响应信息包括以下几个:
➢状态行。所有 HTTP 响应的第一行都是状态行, 依次是当前HTTP 版本号、3 位数字组成的状态代码,以及描述状态的短语,彼此由空格分隔。关于常见的状态码,将在后面列出。
➢(响应)头,例如Date 头说明了响应生成的时间及日期。Content-Type指定了MIME 类型HTML(text/html);Content-Length 指定了返回内容的长度等。服务器通常还会返回一些关于其自身的信息,尽管这不是必要的。(www.chuimin.cn)
➢空行,与请求消息一样,该空行不可或缺。
➢可选的响应主体。如果请求的资源是网页,响应主体所包含的就是所请求资源的HTML 源文件,浏览器将把这些数据显示给用户;若请求的资源不是网页,响应主体可能包含其他资源类型的数据,比如二进制数据。
3.HTTP 状态代码详细介绍
状态代码的第一个数字代表当前响应的类型:
➢ 1xx 消息——请求已被服务器接收,继续处理;
➢ 2xx 成功——请求已成功被服务器接收、理解、并接受;
➢ 3xx 重定向——需要后续操作才能完成这一请求;
➢ 4xx 请求错误——请求含有词法错误或者无法被执行;
➢ 5xx 服务器错误——服务器在处理某个正确请求时发生错误。
状态代码如表1.1 所示。
表1.1 状态代码列表
表1.1中加粗部分表示这些状态码在今后的Web 开发中很常用,请记住它们。
相关推荐