超文本传输协议(HTTP,HyperText Transfer Protocol)是互联网上最为广泛的一种网络协议。所有的www文件都必须遵守这个标准。设计HTTP最初的目的是为了提供一种发布和接收HTML页面的方法。
HTTP协议和TCP/IP协议簇内的其他众多协议相同,用于客户端和服务端直接的通信。
1989 - HTTP诞生
最初设想:借助多文档之间互相关联形成的超文本(HyperText),连接可相互参阅www(万维网)。
1990 - HTTP/9.0
HTTP于1990年问世。
1996 - HTTP/1.0
1996年5月,HTTP正式作为标准被公布。
1997 - HTTP/1.1
1997年1月公布的HTTP/1.1是目前主流的HTTP协议版本。
用于HTTP协议交互的信息被称为HTTP报文,请求断的HTTP报文叫做请求报文,响应端的叫做响应报文。HTTP报文是由多行(CR:回车符+LF:换行符 作为换行符)数据构成的字符串文本。
GET:请求访问已被URL识别的资源。
POST:传输实体的主体。
PUT:传输文本。
HEAD:HEAD方法和GET方法一样,只是不返回报文主体部分。用于确认URl的有效性及资源更新的日期时间等。
DELETE:删除文件。
OPTIONS:查询针对请求URL指定的资源支持的方法。
TRACE:让Web服务器端将之前的请求通信环回给客户端。
1XX:信息性状态码,接收的请求正在处理。
2XX:成功状态码,请求正常处理完毕。
3XX:重定向状态码,需要进行附加操作以完成请求。
4XX:客户端错误状态码,服务器无法处理请求。
5XX:服务器错误状态码,服务器处理请求出错。
200 OK:表示从客户端发来的请求在服务器端被正常处理了。
301 MOVED Permanently:永久性重定向,表示请求的资源已被分配了新的URL,以后应使用资源现在所指的URL。
302 Found:临时性重定向,表示请求的资源已被分配了新的URL,希望用户(本次)能使用新的URL访问。
304 Not Modified:客户端发送附带的条件请求时,服务器端允许请求访问资源,但为满足条件的情况。304状态码返回时,不包含任何响应的主体成分。
400 Bad Request:表示请求报文中存在语法错误,当错误发生时,需修改请求的内容后再次发送请求。
401 Unauthorized:该状态码表示发送的请求需要有通过HTTP认证(BASIC、DIGEST认证)的认证信息。若之前已进行过1次请求,则表示用户认证失败。
403 Forbidden:表示对请求资源的访问被服务器拒绝了。
404 Not Found:表示服务器上无法找到请求的资源。
500 Internal Server Error:表明服务器端在执行请求时发生了错误,也有可能是Web应用存在的bug或某些临时的故障。
503 Server Unavailable: 表明服务器暂时处于超负荷或者正在进行停机维护,现在无法处理请求。
首部字段名:字段值
例如,Content-Type:text/html
单个HTTP首部字段可以有多个值,例如:
Keep-Alive:timeout=15,max=100
通用首部字段:请求报文和响应报文两方都会使用的首部。
请求首部字段:从客户端向服务端发送请求报文时使用的首部,补充了请求的俯加内容、客户端信息、响应内容相关优先级等信息。
响应首部字段:从服务端向客户端返回响应报文时使用的首部,补充了响应的附加内容,也会要求客户端附加额外的内容信息。
实体首部字段:针对请求报文和响应报文的实体部分使用的首部,补充了资源内容更新时间等与实体有关的信息。