目录
一、 HTTP 消息格式
HTTP 协议的消息有两种类型:请求消息、响应消息。
无论是请求消息还是响应消息,都是由“开始行”(start-line)或“状态行”(status-line)、“消息头”(headers)和“消息体”(message-body)构成。
二、 HTTP 请求信息
1. 请求消息格式
2. 请求方法
请求方法 | 主要作用 |
---|---|
GET | 请求获取 Request-URL 所标识的资源。 |
POST | 像 Request-URL 所标识的资源追加提交数据。 |
OPTIONS | 请求查询服务器的性能,或查询有关资源的可用选项。 |
HEAD | 请求以 Request-URL 所标识的资源的响应消息报头。 |
PUT | 请求以 Request-URL 为标识存储一个资源。 |
DEETE | 请求删除 Request-URL 所标识的资源。 |
TRACE | 请求回送收到的请求信息,主要用于测试或诊断。 |
CONNECT | 请求建议连接随到,一般在代理中使用。 |
补充说明:
(1) GET:从指定的资源请求数据。查询字符串(名称/值对)是在 GET 请求的 URL 中发送的
(2) POST:向指定的资源提交被处理的数据。查询字符串(名称/值对)是在 POST 请求的 HTTP 消息主体中发送的
(3) HEAD:常常用于测试资源是否存在、是否已经被修改或删除。
(4) PUT:如果Requesr-URI为标识资源已经存在,则应当替换原资源的内容;如果标识的资源不存在,服务器应该创建该资源,并且通知客户机。
(5) DELETE:通常会删除该资源,或者是把资源转移到一个访问不到的地方。
3. GET和POST的对比:
GET
- GET 请求可被缓存
- GET 请求保留在浏览器历史记录中
- GET 请求可被收藏为书签
- GET 请求不应在处理敏感数据时使用
- GET 请求有长度限制
- GET 请求只应当用于取回数据
POST
- POST 请求不会被缓存
- POST 请求不会保留在浏览器历史记录中
- POST 不能被收藏为书签
- POST 请求对数据长度没有要求
三、 HTTP 响应信息
1. 请求消息格式
2.HTTP响应状态码状态说明
响应状态码 | 类别与作用 |
---|---|
1xx | 普通信息码 。表示请求已经接收到,服务器将继续处理。 |
2xx | 操作成功码 。表示请求已经被成功接收,处理并予以响应。 |
3xx | 重定向码 。客户机需要进一步操作才能完成请求。 |
4xx | 客户机错误码 。客户机的请求有错误。 |
5xx | 服务器错误码 。服务器出现错误,无法处理请求。 |
3.响应码
(1) 普通信息码(1xx)
-
100 Continue:
用于告诉客户机,服务器已经准备好接收请求的剩余部分。 -
101 Switching Protocols:
用于告诉客户机,服务器同意客户机把当前使用的协议转换为客户机指定的协议。
(2) 操作成功码(2xx)
-
200 OK
用于告诉客户机,请求已经成功处理完毕。 -
201 Created
用于告诉客户机,请求已经被成功处理,新的资源已经在服务器成功创建。 -
202 Accepted
用于告诉客户机,请求已经被服务器接收并准备或正在处理,但还没有处理完毕。 -
203 Non-Authoritative Information
用于告诉客户机,本响应的信息投不是完全由本服务器产生的 ,一般是从第三方服务器收集得到的。 -
204 No Content
用于告诉客户机,请求已经处理完成,不需要返回实体信息,只会通过响应消息头返回一些元信息(mete-information)。 -
205 Reset Content
用于告诉客户机,请求已经处理完成,客户机需要恢复所显示的文档(document)到初始状态(reset)。 -
206 Partial Content
这条状态码一般是在GET请求处理之后,用于告诉客户机,服务器返回的资源内容只是全部内容中的一部分,并非完整的内容。 -
203 Non-Authoritative Information
用于告诉客户机,本响应的信息投不是完全由本服务器产生的 ,一般是从第三方服务器收集得到的。
(3) 重定向码(3xx)
-
300 Multiple Choice
表明所请求的资源对应于服务器端的多个位置,服务器在响应的消息体中饱含了所有位置(URL)的列表,客户机可以从该列表中选择其中之一进行进一步的请求以最终获取到该资源。 -
301 Moved Permanently
表明所请求的资源已经不在请求的URL上,而是永久转移到了新的URL。 -
302 Found
表明所请求的资源暂时转向到了另外一个URL上,客户机这一次应该访问新的URL获取资源,而将来对这个资源的请求仍然应该访问原先的URL。 -
303 See Other
表明所请求的资源可以在另外一个URL上找到,并且应该通过GET请求方法获取。 -
304 Not Modified
当客户机使用GET请求方法获取资源时,请求中包含了信息头“IF-Modified-Since”,并且资源并未修改过,则服务器将返回304状态码。 -
305 Use Proxy
表明所请求的资源必须通过代理(proxy)才能访问,代理的URL通过响应消息头“Location”给出。 -
307 Temporary Redirect
这条状态码的含义与302状态码基本相同,主要区别在于针对不同的请求方法时的响应。
(4) 客户机错误码(4xx)
-
400 Bad Request
表明客户机发出的请求格式有问题,导致服务器无法处理。 -
401 Unauthorized
表明客户机,访问该资源之前需要进行用户身份验证(user authentication)。 -
403 Forbidden
表明服务器接收到了请求,但是拒绝处理。 -
404 Not Found
表明客户机所请求的资源不存在,客户机不应该再请求该资源。 -
405 Method Not Allowed
表明客户机,使用当前的请求方法访问该资源不被允许。 -
406 Not Acceptable
表明客户机,所请求资源的格式与客户机能够接收的格式(MIME类型)不匹配。 -
407 Proxy Authentication Required
这条状态码类似于状态码401,不同在于是告诉客户机需要通过代理服务器的身份验证。 -
408 Request Timeout
表明服务器在指定时间内没有收到客户机发送的完整的请求信息。 -
409 Conflict
表明客户机,由于与其他请求发出冲突,所以请求的资源或操作无法进行。 -
410 Gone
表明客户机,所请求的资源已经不存在。这条状态码与404的主要区别在于,本状态码能够指定的资源已经是永久不存在,客户机不应该再访问改URL -
411 Length Required
当客户机发送的请求消息包含消息体,但未发送消息头“Content-Length”时,服务器返回本状态码,要求客户机重发正确的请求。 -
412 Precondition Failed
表明客户机发送的请求消息头中包含一个或多个If条件时,服务器返回本状态码告诉客户机哪些条件是FLASE结果。 -
413 Request Entity Too Large
表明客户机发送的请求消息体超过服务器所能处理的最大大小时。 -
414 Request-URL Too Long
表明客户机发送的请求消息中Request-URL超长时,服务器返回本状态码。 -
415 Unsupported Media Type
表明客户机,服务器无法处理所发送的消息体的格式。 -
416 Request Range Not Satisfiable
表明客户机,所发送的对资源的访问范围信息不正确。 -
417 Expectation Failed
当服务器无法满足客户机发送的请求头“Expect”的内容时。
(5) 服务器错误码(5xx)
-
500 Internal Server Error
当服务器在处理请求的过程中发生无法预知的错误导致无法继续处理时。 -
501 Not Implemented
当服务器未实现客户机所发送的请求方法无法处理改请求时。 -
502 Forbidden
当服务器作为代理或网关,在接收上级服务器的响应出现错误时。 -
503 Service Unavailable
当服务器由于负载过重或者因为临时进行维护等情况下无法正常提供服务时。 -
504 Method Not Allowed
当服务器作为代理或网关,因为网络中断等原因无法连接上级服务器是。 -
505 HTTP Version Not Supported
当服务器无法或拒绝处理请求中指定的HTTP协议版本时。