《图解HTTP》读书笔记二

155 阅读5分钟

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

HTTP状态码负责表示客户端 HTTP请求的返回结果、标记服务器端的处理是否正常、通知出现的错误等工作。

image.png

一、2XX 成功

200 OK

从客户端发来的请求在服务器端被正常处理了。

204 No Content

服务器接收的请求已成功处理,但在返回的响应报文中不含实体的主体部分。另外,也不允许返回任何实体的主体。比如,当从浏览器发出请求处理后,返回 204 响应,那么浏览器显示的页面不发生更新。

一般在只需要从客户端往服务器发送信息,而对客户端不需要发送新信息内容的情况下使用。

206 Partial Content

客户端进行了范围请求,而服务器成功执行了这部分的 GET 请求。

二、3XX 重定向

301 Moved Permanently

永久性重定向,表示请求的资源已被分配了新的 URI,以后应按 Location 首部字段提示的 URI 重新保存。

302 Found

临时性重定向,表示请求的资源已被分配了新的 URI,希望用户(本次)能使用新的 URI 访问。

一般在只需要从客户端往服务器发送信息,而对客户端不需要发送新信息内容的情况下使用。

303 See Other

表示由于请求对应的资源存在着另一个 URI,应使用 GET方法定向获取请求的资源。

302和303区别:功能相同,但 303 明确表示客户端应当采用 GET 方法获取资源。当 301、302、303 响应状态码返回时,几乎所有的浏览器都会把POST 改成 GET,并删除请求报文内的主体,之后请求会自动再次发送。

304 Not Modified

客户端发送附带条件的请求时,服务器端允许请求访问资源,但未满足条件的情况。返回时不包含任何响应的主体部分。

附带条件的请求:采用GET请求报文中包含If-Match,If-ModifiedSince,If-None-Match,If-Range,If-Unmodified-Since中任一首部。

三、4XX 客户端错误

400 Bad Request

请求报文中存在语法错误,需修改请求的内容后再次发送请求。

401 Unauthorized

发送的请求需要有通过 HTTP 认证的信息。

一般在只需要从客户端往服务器发送信息,而对客户端不需要发送新信息内容的情况下使用。

403 Forbidden

对请求资源的访问被服务器拒绝了,未获得文件系统的访问授权,访问权限出现某些问题(从未授权的发送源 IP 地址试图访问)等列举的情况都可能是发生 403 的原因。

404 Not Found

服务器上无法找到请求的资源。除此之外,也可能是服务器端拒绝请求且不想说明理由。

四、5XX 服务器错误

500 Internal Server Error

服务器端在执行请求时发生了错误,或者Web应用存在的 bug 或某些临时的故障。

503 Service Unavailable

服务器暂时处于超负载或正在进行停机维护。

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

通过利用虚拟主机(Virtual Host,又称虚拟服务器),HTTP/1.1 规范允许一台 HTTP 服务器搭建多个 Web 站点。在相同的 IP 地址下,由于虚拟主机可以寄存多个不同主机名和域名的 Web 网站,因此在发送 HTTP 请求时,必须在 Host 首部内完整指定主机名或域名的 URI。

通信数据转发程序:代理、网关、隧道,可以将请求转发给通信线路上的下一站服务器,并且能接收从那台服务器发送的响应再转发给客户端。

一、代理——转发

在 HTTP 通信过程中,可级联多台代理服务器。转发时,需要附加Via 首部字段以标记出经过的主机信息。 image.png

分类:

  • 是否使用缓存:缓存代理(Caching Proxy)将资源的副本保存在代理服务器上。当代理再次接收到对相同资源的请求时,就可以不从源服务器那里获取资源,而是将之前缓存的资源作为响应返回。
  • 是否会修改报文:透明代理(Transparent Proxy)不对报文做任何加工,反之称为非透明代理。 作用:
  • 利用缓存技术减少网络带宽的流量;
  • 组织内部针对特定网站的访问控制,以获取访问日志为主要目的

二、网关——像自己拥有资源的源服务器一样对请求进行处理

网关能使通信线路上的服务器提供非 HTTP 协议服务

作用:

  • 提高通信的安全性,因为可以在客户端与网关之间的通信线路上加密以确保连接的安全。

三、隧道——在相隔甚远的客户端和服务器之间进行中转

隧道可按要求建立起一条与其他服务器的通信线路,届时使用 SSL等加密手段进行通信。隧道本身不会去解析 HTTP 请求。

作用:

  • 确保客户端能与服务器进行安全的通信

四、缓存(关于缓存代理服务器的补充)

  • 有效期限 即使存在缓存,也会因为客户端的要求、缓存的有效期等因素,向源服务器确认资源的有效性。若判断缓存失效,缓存服务器将会再次从源服务器上获取“新”资源。

  • 客户端的缓存 浏览器缓存如果有效,就不必再向服务器请求相同的资源了,可以直接从本地磁盘内读取。当判定缓存过期后,会向源服务器确认资源的有效性。若判断浏览器缓存失效,浏览器会再次请求新资源。