HTTP协议
2019-03-29 本文已影响0人
StoneFu
HTTP 消息
Web客户端与Web服务器之间的通讯,是以消息为载体的,分为“请求消息”和“响应消息”两大类……
HTTP消息的格式
请求消息:
GET / HTTP/1.1 //Start line
Host: www.baidu.com //Headers
Connection: keep-alive
Accept: text/html,application/xhtml+xml
响应消息
HTTP/1.1 200 OK //Start line
Content-Type: text/html; //Headers
Content-Length: 25032
……
<html> //Body
<head>
……
</head>
<body>
……
</body>
- Start line和Headers部分以回车(ASCII 13)和换行(ASCII 10)分隔,Headers最后有一个空行
- 每个HTTP首部(header)都拥有以下的格式:一个名字,紧跟一个冒号(:),后面是一个可选的空白符(whitespace),紧接着是值,最后是一个回车换行符(CRLF)。
- HTTP主体(body)代表一个HTTP消息所承载的具体内容。它可以是纯文本的,也可以是二进制的。
HTTP方法与状态码
常用的HTTP 方法
方法名 | 描述 | 有无消息主体 |
---|---|---|
GET | 从服务器上获取一个文档 | No |
HEAD | 仅从服务器上提取文档的相关信息 | No |
POST | 将数据发送给服务器处理。 | Yes |
PUT | 将消息主体所包容的内容保存到服务器上。 | Yes |
TRACE | 获取HTTP消息所通过代理服务器到达最终服务器的路径信息。 | No |
OPTIONS | 询问服务器它是否支持某一HTTP方法。 | No |
DELETE | 从服务器中删除一个文档 | No |
HTTP状态码
HTTP的状态码,主要供Web服务器通知客户端:XXX事情发生了, XXX请求的处理结果是什么。
限定的范围 | 己使用的范围 | 种类 |
---|---|---|
100-199 | 100-101 | Informational |
200-299 | 200-206 | Successful(成功) |
300-399 | 300-305 | Redirection(重定向) |
400-499 | 400-415 | Clienterror(客户端错误) |
500-599 | 500-505 | Servererror(服务端错误 ) |
常用的标准HTTP状态码
状态码 | 名称 | 说明 |
---|---|---|
200 | OK | 操作成功完成 |
301 | MovedPermanently | 要访问的资源己被永久移动,不要再访问这个URL了 |
302 | MovedTemporaily | 过些时间这个URL可能又可以访问了 |
304 | NotModified | 资源自从上次访问之后,没有被更改 |
400 | BadRequest | 发来的请求是无效的 |
401 | Unauthorized | 客户端需要进行身份验证 |
403 | Forbidden | 禁止访问此资源 |
404 | Notfound | 要访问的资源不存在 |
500 | InternalServer | 服务端在处理请求时出现了错误 |
503 | ServiceUnavailable | 服务暂时不可用 |
HTTP请求与响应过程
Web客户端程序与服务端程序的消息交换过程.png图解HTTP请求的处理过程.png
小结
-
掌握HTTP协议相关的一些基础知识,是开发Web应用的基础。
-
要深入理解许多HTTP的技术细节,还需要掌握相应的多线程网络编程技巧。
-
在实际开发中,我们更多地使用浏览器本身的开发者工具,一些第三方工具(比如Fiddler),或者是由开发平台所提供的一些高层组件(比如HttpClient)来开发Web应用。
HTTP的技术书籍
《图解HTTP》比较通俗易懂
《HTTP权威指南》强力推荐。