HTTP(Hypertext Transfer Protocol,超文本传输协议)
HTTP的发展是万维网协会(World Wide Web Consortium)和Internet工作小组(Internet Engineering Task Force)合作的结果,(他们)最终发布了一系列的RFC,其中最著名的就是RFC 2616。RFC 2616定义了HTTP协议的我们今天普遍使用的一个版本——HTTP 1.1。
HTTP是一个用于在客户端和服务器间请求和应答的协议。一个HTTP的客户端,诸如一个web浏览器,通过建立一个到远程主机特殊端口(默认端口为80)的连接,初始化一个请求。一个HTTP服务器通过监听特殊端口等待客户端发送一个请求序列, 就像“GET / HTTP/1.1”(用来请求网页服务器的默认页面),有选择的接收像email一样的MIME消息,此消息中包含了大量用来描述请求各个方面的信息头序列,响应一个选择的保留数据主体。接收到一个请求序列后(如果要的话,还有消息),服务器会发回一个回复,如“200 OK”,同时发回一个它本报的消息,此消息的主体可能是被请求的文件、错误消息或者其他的一些信息。
HTTP报文由从客户机到服务器的请求和从服务器到客户机的响应构成。请求报文格式如下:
请求行——通用信息头——请求头——实体头——报文主体
请求行以方法字段开始,后面分别是 URL 字段和 HTTP 协议版本字段,并以 CRLF 结尾。SP 是分隔符。除了在最后的 CRLF 序列中 CF 和 LF 是必需的之外,其他都可以不要。有关通用信息头,请求头和实体头方面的具体内容可以参照相关文件。
应报文格式如下:
状态行——通用信息头——响应头——实体头——报文主体
状态码元由3位数字组成,表示请求是否被理解或被满足。原因分析是对原文的状态码作简短的描述,状态码用来支持自动操作,而原因分析用来供用户使用。客户机无需用来检查或显示语法。有关通用信息头,响应头和实体头方面的具体内容可以参照相关文件。
HTTP/1.1协议中共定义了八种方法来指示确认的资源执行所需的行为:
l OPTIONS——返回服务器针对特定资源所支持的HTTP请求方法,这可以用来检查网络服务器的功能。
l HEAD——向服务器索要与GET请求相一致的响应,只不过响应体将不会被返回。这一方法可以在不必传输整个响应内容的情况下,就可以获取包含在响应消息头中的元信息。
l GET——向特定的资源发出请求。GET方法不应当被用于产生副作用的操作中。
l POST——向指定资源提交数据进行处理请求。数据被包含在请求体中,POST请求可能会导致新的资源的建立和/或已有资源的修改。
l PUT——向指定资源位置上传其最新内容。
l DELETE——删除指定资源。
l TRACE——回显服务器收到的请求。
l CONNECT ——HTTP/1.1协议中预留给能够将连接改为管道方式的代理服务器。
所有 HTTP 响应的第一行都是状态行, 依次是当前 HTTP 版本号,3位数字组成的状态代码,以及描述状态的短语,彼此由空格分隔。状态代码的第一个数字代表当前响应的类型:
l 1xx 消息——请求已被服务器接收,继续处理
l 2xx 成功——请求已成功被服务器接收、理解、并接受
l 3xx 重定向——需要后续操作才能完成这一请求
l 4xx 请求错误——请求含有词法错误或者无法被执行
l 5xx 服务器错误——服务器在处理某个正确请求时发生错误
常用的 HTTP 状态码:
l 200 OK——
l 302 Found——
l 304 Not Modified——
l 401 Unauthorized——
l 403 Forbidden——
l 404 Not Found——
l 500 Internal Server Error——
常用的响应头:
Server——Web 服务器的名称和版本。
Date——当前日期(格林威治标准时间)。
Last-modified——上次修改文档的日期。
Expires——文档到期的日期。
Content-length——随附数据的长度(以字节为单位)。
Content-type ——随附数据的MIME 类型。
WWW-authenticate——在验证时使用,其中的内容用于告诉客户机软件需要提供哪些验证信息(例如用户名和密码)。