《http权威指南》读书笔记2

概述

最近对http很感兴趣,于是开始看《http权威指南》。别人都说这本书有点老了,而且内容太多。我个人觉得这本书写的太好了,非常长知识,让你知道关于http的很多概念,不仅告诉你怎么做,还告诉你为什么这么做。于是我把学到的知识点记录下来,供以后开发时参考,相信对其他人也有用。

URL与资源

1.在url出现之前,要想和朋友共享complete-catalog.xls文件,就得说这样一些话:用ftp连接到ftp.joes-hardware.com上。用匿名登录,然后输入你的用户名作为密码。变换到pub目录。转换为二进制模式。现在可以将名为complete-catalog.xls的文件下载到本地文件系统,并在那里浏览这个文件了。

2.URL语法:

<scheme>://<user>:<password>@<host>:<port>/<path>;<params>?<query>#<frag>

3.url里面可以输出用户名和密码

http://joe:[email protected]/sales_info.txt

4.URL里面还可以输入参数,参数是键值对的形式,用;分隔。

ftp://prep.ai.mit.edu/pub/gnu;type=d

并且URL的路径可以分成若干路径段,每段都可以有自己的参数,比如:

http://www.joes-hardware.com/hammers;sale=false/index.html;graphics=true

5.URl有片段功能,片段就是锚点,它并不会被传给服务器。

6.URL的快捷方式是使用相对URL,通过基础URL来推断出scheme和host,然后组装给相对URL。需要注意的是,只会把host组装给相对URL,而不是带路径的host。

7.自动扩展URL,很多浏览器都支持自动扩展URL,有2种扩展方式:主机名扩展,比如输入baidu会自动解析为www.baidu.com;历史扩展,在输入URL的时候会和历史URL进行匹配,然后提供一些URL来供你选择。

8.为了避开安全字符集表示法带来的限制,人们通过“转义”表示法来表示不安全的字符,这种转义表示法包含一个百分号(%),后面跟着两个表示字符ASCII码的十六进制数。值得一提的是,对于某些传输协议来说,使用不安全字符并没有发生不好的事情,但是对非安全字符进行编码仍然是明智的。

9.URL会告诉你资源处于什么位置,但是缺点是如果资源被移走了,URL也就不再生效了。这个时候,用URN会更有优势。

http报文

1.报文(message)是通过一个回车符和一个换行符(CRLF)来分隔起始行,首部和主体的。稳健的应用程序应该接受单个换行符作为行的终止。

2.请求报文的格式是:

<方法> <请求URL> <http版本>
<头部>
<主体>

3.响应报文的格式是:

<http版本> <状态码> <状态语>
<头部>
<主体>

4.首部分为:通用首部(既在请求报文中又在响应报文中,比如Date),请求首部(只在请求报文中,比如Accept),响应首部(只在响应报文中,比如Server),实体首部(描述主体,比如Content-Type),扩展首部(规范中没有定义的)。

5.一条长的首部可以分为多行,只需要在第二行前面加一个空格或tab即可。

6.安全方法:指不产生动作的方法(在服务器上不产生结果),比如get或者head。值得注意的是,安全方法可能会执行动作,这是有web开发者决定的。

7.head方法和get方法很类似,但服务器在响应中只返回首部,不会返回实体。这就允许客户端在未获取实际资源的情况下,对资源的首部进行检查。

8.put方法的语义是让服务器用请求的主体部分来创建一个由所请求的url命名的新文档。

9.options方法请求web服务器告知其支持的各种功能,可以询问服务器通常支持哪些方法,或者对某些特殊资源支持哪些方法。

10.扩展方法。http被设计为字段可扩展的,这样新的特性就不会使老的软件失效了。扩展方法指的就是没有在http/1.1规范中定义的方法。

11.状态码:

  • 100~199:信息性状态码
  • 200~299:成功状态码
  • 300~399:重定向状态码
  • 400~499:客户端错误状态码
  • 500~599:服务端错误状态码

12.请求首部:

  • Accept首部
  • 条件请求首部,比如If-Modified-Since
  • 安全请求首部,比如cookie
  • 代理请求首部,比如Proxy-Authorization

13.响应首部:

  • 协商首部,比如Accept-Ranges
  • 安全响应首部,比如Set-Cookie

14.实体首部:

  • 内容首部,比如Content-Length
  • 实体缓存首部,比如Last-Modified

猜你喜欢

转载自www.cnblogs.com/yangzhou33/p/9211453.html