zoukankan      html  css  js  c++  java
  • 《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:joespassword@www.joes-hardware.com/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
  • 相关阅读:
    codeforces 466D
    codeforces 360B
    codeforces 383D
    codeforces 679B
    codeforces 571B
    codeforces 494B
    CodeForces 660D Number of Parallelograms(n个点所能组成的最多平行四边形数量)
    算法竞赛模板 最短路
    算法竞赛模板 string中substr函数的运用
    HDOJ 1269 迷宫城堡(tarjan模板题)
  • 原文地址:https://www.cnblogs.com/yangzhou33/p/9211453.html
Copyright © 2011-2022 走看看