14天学习训练营导师课程:
杨鑫《Python 自学编程基础》
杨鑫《 Python 网络爬虫基础》
杨鑫《 Scrapy 爬虫框架实战和项目管理》
HTTP 响应报文由四部分组成,依次是状态行、响应头、空行和响应正文。下面依次 对这四部分进行介绍
状态行它由协议版本、状态码、状态码描述三个字段组成,它们之间使用空格进行分隔。比 如访问百度时,状态行的内容为 HTTP/1.1 200 OK。
状态码分为下述五大类。
1xx:指示信息,表示请求已接收,继续处理。
2xx:成功,表示请求已被成功接收、理解。
3xx:重定向,表示要完成请求必须进行更进一步的操作。
4xx:客户端错误,表示请求有语法错误或请求无法实现。
5xx:服务器端错误,表示服务器未能实现合法的请求。
详细的状态码如表图所示,无须记忆,使用时查表即可
| 状态码 | 简单描述 | 详细描述 |
|---|---|---|
| 100 | 继续 | 请求者应继续提出请求。服务器返回此代码表示已收到请求的一部分,正在等待其余部分 |
| 101 | 协议切换 | 请求者已要求服务器切换协议,服务器已确认并准备切换 |
| 200 | 成功 | 服务器已成功处理了请求 |
| 201 | 已创建 | 请求成功,并且服务器创建了新的资源 |
| 202 | 已接收 | 服务器已接收请求,但尚未处理 |
| 203 | 非授权信息 | 服务器已成功处理了请求,但返回的信息可能来自另一来源 |
| 204 | 无内容 | 服务器成功处理了请求,但没有返回任何内容 |
| 205 | 重置内容 | 服务器成功处理了请求,内容被重置 |
| 206 | 部分内容 | 服务器成功处理了部分请求 |
| 300 | 多种选择 | 针对请求,服务器可执行多种操作 |
| 301 | 永久移动 | 请求的网页已永久移动到新位置,永久重定向 |
| 302 | 临时移动 | 请求的网页暂时跳转到其他页面,暂时重定向 |
| 303 | 查看其他位置 | 请求对应的资源存在另一个 URI,应使用 GET 方法定向获取请求的资源 |
| 304 | 未修改 | 此次请求返回的网页未修改,继续使用上次的资源 |
| 305 | 使用代理 | 请求者应使用代理访问请求的网页 |
| 307 | 临时重定向 | 请求的资源临时从其他位置响应 |
| 400 | 错误请求 | 服务器无法解析该请求 |
| 401 | 未授权 | 请求要求身份验证或验证未通过 |
| 403 | 禁止访问 | 服务器拒绝请求 |
| 404 | 未找到 | 服务器找不到请求的网页 |
| 405 | 方法禁用 | 服务器禁用请求中指定的方法 |
| 406 | 不接收 | 无法使用请求的内容特性响应请求的网页 |
| 407 | 需要代理授权 | 请求者需要使用代理授权 |
| 408 | 请求超时 | 服务器等候请求时发生超时 |
| 409 | 冲突 | 服务器在完成请求时发生冲 |
| 410 | 已删除 | 请求的资源已永久删除 |
| 411 | 需要有效长度 | 服务器不接收不含有效内容长度标头字段的请求 |
| 412 | 未满足前提条件 | 服务器未满足请求者在请求中设置的其中一个前提条件 |
| 413 | 请求实体过大 | 请求实体过大,超出服务器的处理能力 |
| 414 | 请求的 URI 过长 | 请求的 URI(通常为网址)过长,服务器无法处理 |
| 415 | 不支持的媒体类型 | 请求的格式不被请求页面支持 |
| 416 | 请求范围不符合要求 | 页面无法提供请求的范围 |
| 417 | 未满足期望值 | 服务器未满足请求标头字段的要求 |
| 500 | 服务器内部错误 | 服务器遇到错误,无法完成请求 |
| 501 | 尚未实施 | 服务器不具备完成请求的功能 |
| 502 | 错误网关 | 服务器作为网关或代理从上游服务器收到无效响应 |
| 503 | 服务不可用 | 服务器目前无法使用(由于超载或停机维护) |
| 504 | 网关超时 | 服务器作为网关或代理没有及时从上游服务器收到请求 |
| 505 | HTTP 版本不受支持 | 服务器不支持请求中所用的 HTTP 版本 |
它包含了服务器对请求的一些应答信息,常见响应头如图表所示。
常见响应头
| 响应头 | 解释 | 示例 |
|---|---|---|
| Accept-Ranges | 表明服务器是否支持指定范围请求及支持哪种类型的分段请求 | Accept-Ranges:bytes |
| Age | 从原始服务器到代理缓存形成的估算时间(以秒计,非负) | Age:12 |
| Allow | 对某网络资源的有效的请求行为,不允许则返回 405 | Allow:GET, HEAD |
| Cache-Control | 告诉所有的缓存机制是否可以缓存及缓存哪种类型 | Cache-Control:no-cache |
| Content-Encoding | Web服务器支持的返回内容压缩编码类型 | Content-Encoding:gzip |
| Content-Language | 响应正文的语言 | Content-Language:en,zh |
| Content-Length | 响应正文的长度 | Content-Length:348 |
| Content-Location | 请求资源可替代的备用的另一地址 | Content-Location:/index.htm |
| Content-MD5 | 返回资源的 MD5 校验值 | Content-MD5:Q2hlY2sgSW50ZWdyaXR5IQ== |
| Content-Range | 在整个返回体中本部分的字节位置 | Content-Range:bytes 21010-47021/47022 |
| Content-Type | 返回内容的 MIME 类型 | Content-Type:text/html; charset=utf-8 |
| Date | 原始服务器消息发出的时间 | Date:Tue, 15 Nov 2010 08:12:31 GMT |
| ETag | 请求变量的实体标签的当前值 | ETag:“737060cd8c284d8af7ad3082f209582d” |
| Expires | 响应过期的日期和时间 | Expires:Thu, 01 Dec 2010 16:00:00 GMT |
| Last-Modified | 请求资源的最后修改时间 | Last-Modified:Tue, 15 Nov 2010 12:45:26 GMT |
| Location | 用来重定向接收方到非请求 URL 的位置以完成请求或标识新的资源 | Location:http://blog.csdn.net/coder_pig |
| Pragma | 包括实现特定的指令,它可应用到响应链上的任何接收方 | Pragma: no-cache |
| Proxy-Authenticate | 它指出认证方案和可应用到代理的该URL 上的参数 | Proxy-Authenticate:Basic |
响应头的最后会有一个空行,表示响应头结束,接下来是响应正文。这个空行必不 可少。
Content-Type 指定响应正文的 Mime 类型,比如 text/html 类型响应正文为 HTML 代码, image/png 类型响应正文为 PNG 图片的二进制数据。