第四章 返回结果的 HTTP 状态码

  • 状态码类别
类别 原因短语
1XX Informational(信息性状态码) 接收的请求正在处理
2XX Success(成功状态码) 请求正常处理完毕
3XX Redirection(重定向状态码) 需要进行附加操作以完成请求
4XX Client Error(客户端错误状态码) 服务器无法处理请求
5XX Server Error(服务器错误状态码) 服务器处理请求出错
  • 代表性状态码
    • 200 OK
    • 204 No Content:一般在只需要从客户端往服务器发送信息,而对客户端不需要发送新信息内容的情况下使用
    • 206 Partial Content:响应报文中包含由 Content-Range 指定范围的实体内容
    • 301 Moved Permanently:永久性重定向。请求的资源已被分配了新的 URI
    • 302 Found:临时性重定向。希望用户本次能使用新的 URI 访问
    • 303 See Other:该状态码和 302 有着相同功能,但是 303 明确表示客户端应当采用 GET 方法获取资源
    • 备注:301、302、303 响应码返回时,几乎所有的浏览器都会把 POST 改为 GET,并删除请求报文内的主体,之后请求会自动再次发送。
    • 304 Not Modified:客户端发送附带条件的请求(采用 GET 方法的请求报文中包含 If-Match/If-Modified-Since/If-None-Match/If-Range/If-Unmoodified-Since 中任一首部)时,服务器允许请求访问资源,但未满足条件的情况。304 返回时不包含任何响应的主体部分。304 与重定向无关系。
    • 307 Temporary Redirect:临时重定向。与 302 含义相同。302 标准禁止将 POST 变换成 GET,但是使用时大家并不遵守。而 307 会遵守浏览器标准,不会将 POST 变为 GET。
    • 400 Bad Request:报文中存在语法错误,浏览器无法理解,但会像对待 200 OK 一样对待该状态码。
    • 401 Unauthorized:发送的请求需要有通过 HTTP 认证(BASIC 认证、DIGEST 认证)的认证信息。此外,如果之前已经进行过 1 次请求,则表示用户认证失败。返回 401 的响应必须包含一个适用于被请求资源的 WWW-Authenticate 首部用以质询用户信息。当浏览器初次接收到 401 响应,会弹出认证用的对话窗口。
    • 403 Forbidden:服务器拒绝访问,原因可能是未获得文件系统的访问授权,访问权限出现某些问题等。
    • 404 Not Found:服务器上无法找到请求的资源,也可以在服务器端拒绝请求且不想说明理由时使用。
    • 500 Internal Server Error:服务器端执行请求时发生错误。
    • 503 Service Unavailable:服务器暂时处于超负载或正在进行停机维护,现在无法处理请求。
  • 注:不少返回的状态码响应都是错的,比如 Web 应用程序内部发生错误,状态码依然返回 200 OK。

第五章 与 HTTP 协作的 Web 服务器

  • 相同的 IP 地址下,虚拟主机可以寄存多个不同主机名和域名的 Web 网站。发送 HTTP 请求时,必须在 Host 首部内完整指定主机名或域名的 URI。
  • HTTP 通信时,除客户端和服务器以外,还有一些用于通信数据转发的应用程序,如代理、网关和隧道。
    • 代理:一种具有转发功能的应用程序;不改变请求 URI;每次通过代理服务器转发请求或者响应时,会追加写入 Via 首部信息(Via: proxy 2, proxy1);代理可级联;
      • 使用代理服务器的理由包括:
        • 利用缓存技术减少网络带宽的流量。
        • 组织内部针对特定网站的访问控制
        • 以获取日志为主要目的
      • 代理有多种使用方法,按两种基准分类:一种时是否使用缓存,另一种是是否会修改报文
        • 缓存代理:代理转发响应时,缓存代理(Caching Proxy)会预先将资源的副本(缓存)保存在代理服务器上
        • 透明代理:转发请求或响应时,不对报文做任何加工的代理类型被称为透明代理(Transparent Proxy),反之为非透明代理
    • 网关:转发其他服务器通信数据的服务器。接收从客户端发送来的请求时,其就像自己拥有资源的源服务器一样对请求进行处理;利用网关可以由 HTTP 请求转化为其他协议通信;网关可以提高通信的安全性,因为可以在客户端与网关之间的通信线路上加密以确保连接的安全;网关可以连接数据库,使用 SQL 语句查询数据
    • 隧道:在相隔很远的客户端和服务器两者之间进行中转,并保持双方通信连接的应用程序;可使用 SSL 等加密手段
支付宝扫码打赏 微信打赏

坚持原创技术分享,您的支持将鼓励我继续创作!

扫描二维码,分享此文章

逆葵's Picture
逆葵

花名逆葵,刚刚毕业的北邮 CS 土著一枚。现在淘宝 FED 搬砖。《Vue.js 权威指南》作者之一。学习、思考、沉淀中,向成为顶级 JavaScript 技术栈开发者努力。