HTTP学习笔记(一)

1.状态码

  1. 100~199:信息状态码
    1. 100: Continue 说明收到了请求的初始部分,请客户端继续。
    2. 101: Switching Protocols 说明服务器正在根据库护短的指定,将协议切换成Update首部所列的协议
  2. 200~299:成功状态码
    1. 200: OK 请求没问题,尸体的主题部分包含了所请求的资源
    2. 201: Created 用于创建服务器对象的请求
    3. 202: Accepted 请求已被接受,但服务器还未对其执行任何动作
  3. 300~399:重定向状态码
    1. 300: Multiple Choices 客户端请求一个指向多个资源的URL时会返回这个状态码
    2. 301: Moved Permanently 在请求的URL已被移除时使用。相应的Location首部中因该包含资源现在所处的URL。
    3. 302: Found 客户端应该使用Location首部给出的URL来临时定位资源。将来的请求仍应使用老的URL。
    4. 304: Not Modified 客户端可以通过所包含的请求首部,使其请求变成有条件的。
  1. 400~499:客户端错误状态码
    1. 400: Bad Request 用于告知客户端它发送了一个错误的请求
    2. 403: Forbidden 用于说明请求被服务器拒绝了
    3. 404: Not Found 用于说明服务器无法找到所请求的URL
    4. 408: Request Timeout 如果客户端完成请求所画的时间太长,服务器可以回送此状态码,并关闭连接
  2. 500~599:服务器错误状态码
    1. 500: Internal Server Error 服务器遇到一个妨碍它为请求提供服务的错误时,使用此状态码
    2. 502: Bad Gateway 作为代理或网关使用的服务器从请求响应链的下一条链路上受到了一条伪响应时,使用此状态码
    3. 503: Service Unavailable 用来说明服务器现在无法为请求提供服务,但将来可以。

2.方法

  1. GET 通常用于请求服务器发送某一个资源
  2. HEAD 与GET类似,但服务器在相应中只返回首部
    • 在不获取资源的情况下了解资源的情况
    • 通过查看相应中的状态码,看看某个对象是否存在
    • 通过查看首部,测试资源是否被修改了
  3. POST 通常用来支持HTML表单
  4. DELETE 请服务器删除请求URL所制定的资源 (若是客户端发起这个操作,则不一定会被执行)

3.重定向和负载均衡

  1. 为什么要重定向
    • 可靠的执行HTTP事务
    • 最小化时延
    • 节约网络带宽
  2. 通用方法
机制工作方式重新路由的基础局限性
HTTP重定向最初,HTTP请求先到第一台Web服务器,这台服务器会选择一台“最佳”的Web服务器为其提供内容。第一台Web服务器回想客户端发送一条道指定服务器的HTTP重定向。客户端会将请求重新发送到选中的服务器上。选择最短路径时可用的选项很多,包括轮转负载均衡和最小化时延等可能会很慢——每个事物都包含了附加的重定向步骤。而且,第一台服务器一定要能够处理请求负载
DNS重定向DNS服务器决定在URL的主机名中返回多个IP地址中的哪一个选择最短路径时可用的选项很多,包括轮转负载均衡和最小化时延等需要配置DNS服务器
Web Proxy代理自动发现(WPAD)Web浏览器想配置服务器查询一个PAC文件的URL。与单独使用PAC不同,不需要将浏览器配置为使用特定的配置服务器配置服务器,将URL简历在客户端HTTP请求首部提供的信息之上。负载均衡只有部分浏览器支持WPAD
HTTP重定向的缺点: - 需要原始服务器进行大量处理来判断要重定向到那个服务器上去。有时,发布重定向所需的处理量几乎与提供页面本身所需的处理量一样。 - 增加了用户时延,因为访问页面时要进行两次往返。 - 如果重定向服务器出故障,站点就会瘫痪。 - 一般情况下,HTTP重定向都会与其他一种或多种重定向技术结合使用。

4.Cookie

cookie是当前识别用户,实现持久会话的最好方式。

  1. cookie的基本思想就是让浏览器积累一组服务器特有的信息,每次访问服务器时,都将这些信息提供给它。

    HTTP状态管理机制即为客户端cookie存储的规范;浏览器只会向服务器发送服务器产生的那些cookie。

  2. cookie的类型

    • 会话cookie 临时cookie,它记录了用户访问站点时的设置和偏好。用户退出浏览器时,会话cookie就被删除了。

    • 持久cookie 生存时间更长,存储在硬盘上,浏览器退出,计算机重启时他们仍然存在。通常会用持久cookie维护某个用户会周期性访问的站点的配置文件或登录名。

    • 会话cookie和持久cookie之间唯一的区别就是他们的过期时间。

    • 如果设置了Discard参数,或者没有设置Expires或Max-Age参数来说明扩展的过期时间,这个cookie就是一个会话cookie。

  当用户通过浏览器访问一个站点的时候,这个站点就会为用户种下一个由名值对({name=value})信息组成的任意列表,这个列表就是cookie。通常情况下,它只包含了一个服务器为了进行跟踪而产生的独特的识别码。通过这个识别码,可以查找到服务器为访问者积累的数据库信息。

  1. cookie的存储
    不同的浏览器会以不同的方式来存储cookie:

    浏览器存储地址
    网景(Navigator)cookies.txt
    微软(Internet)高速缓存目录下独立的文本文件中
  2. cookie、安全性和隐私
    cookie是可以禁止的,而且可以通过日志分析或其他方式来实现大部分跟踪记录,所以cookie自身并不是很大的安全隐患。

    第三方站点使用持久cookie来跟踪用户,结合IP地址和Referer首部信息,某些营销公司就可以构建起相当精确的用户档案和浏览器模式信息。


References

[1] HTTP权威指南