摘要: HTTP/1.1

  1. HTTP 协议用于客户端和服务器端之间的通信

    规定:请求从客户端发出,服务器端响应请求,即客户端开始建立通信,报文格式如下


    (1)请求报文格式;请求方法 + 请求 URI + 协议版本 + 可选的请求首部字段 + 内容实体

    (2)响应报文格式:协议版本 + 状态吗 + 解释状态码的原因短语 + 可选的响应首部字段以及实体主体

  2. HTTP 是不保存状态的协议

    (1)无状态协议,即不做持久化处理,之前的访问信息不予记录,每一次都是新的请求,后为了保持状态引入了 cookie 技

术。

(2)HTTP请求URI定位资源,如果不是访问特定资源而是对服务器本身发起请求,可以使用*代替URI
  1. 告知服务器意图的 HTTP 方法
    (1)GET:当客户端要从服务器中读取某个资源时,使用 GET 方法。GET 方法要求服务器将 URL 定位的资源放在响应报文的数据部分,回送给客户端,即向服务器请求某个资源。使用 GET 方法时,请求参数和对应的值附加在 URL 后面,利用一个问号 (“?”) 代表 URL 的结尾与请求参数的开始,传递参数长度受限制。例如,/index.jsp?id=100&op=bind。如果请求资源是文本,原样返回;如果是 CGI,返回执行后的结果

    (2)POST:用来传输实体的主体(get 也可以但一般不用),主要目的并不是获取响应的主体内容,当客户端给服务器提供信息较多时可以使用 POST 方法,POST 方法向服务器提交数据,比如完成表单数据的提交,将数据提交给服务器处理。GET 一般用于获取 / 查询资源信息,POST 会附带用户数据,一般用于更新资源信息。POST 方法将请求参数封装在 HTTP 请求数据中,以名称 / 值的形式出现,可以传输大量数据;

    (3)PUT:传输文件,类似 FTP,由于任何人都可上传,存在安全性问题,一般不用

    (4)HEAD:与 get 一样,只是不返回报文主体部分,用于确认 URI 的有效性及资源更新的日期和时间等

    (5)DELETE:删除文件,与 PUT 相反的方法,请求 URI 删除指定的资源,不带验证机制,一般不用需配合使用

    (6)OPTIONS:询问支持的方法,用来查询针对请求 URI 指定的资源支持的方法

    (7)TRACE;追踪路径,让 web 服务器将之前的请求通信返回给客户端的方法,200 ok 等,不常用,易引发 XST 攻击

    (8)CONNECT:要求用隧道协议连接代理,与代理服务器通信时建立隧道,主要使用 SSL 和 TLS 协议把内容加密后隧道传输

  2. 使用方法下达命令
    (1)支持的方法列表
    1 GET 请求指定的页面信息,并返回实体主体。
    2 HEAD 类似于 get 请求,只不过返回的响应中没有具体的内容,用于获取报头
    3 POST 向指定资源提交数据进行处理请求(例如提交表单或者上传文件)。数据被包含在请求体中。POST 请求可能会导致新的资源的建立和 / 或已有资源的修改。
    4 PUT 从客户端向服务器传送的数据取代指定的文档的内容。
    5 DELETE 请求服务器删除指定的页面。
    6 CONNECT HTTP/1.1 协议中预留给能够将连接改为管道方式的代理服务器。
    7 OPTIONS 允许客户端查看服务器的性能。
    8 TRACE 回显服务器收到的请求,主要用于测试或诊断。
    9 PATCH 实体中包含一个表,表中说明与该 URI 所表示的原内容的区别。
    10 MOVE 请求服务器将指定的页面移至另一个网络地址
    11 COPY 请求服务器将指定的页面拷贝至另一个网络地址。
    12 LINK 请求服务器建立链接关系。
    13 UNLINK 断开链接关系。
    14 WRAPPED 允许客户端发送经过封装的请求。
    15 Extension-mothed 在不改动协议的前提下,可增加另外的方法

  3. 持久连接节省通信量

    (1)HTTP 初始版本,连接一次要断开一次,麻烦,后来就改成不是每次的请求都造成无谓的 TCP 建立连接和断开这些开销

    (2)管线化:持久连接使得多数请求以管线化方式发送成为可能,即同时发送多个请求

  4. 使用 cookie 的状态管理

    (1)不用每次跳转页面重新登录,在请求和响应报文中写入 cookie 信息控制客户端状态,请求报文(没有 cookie 信息的状态)--- 响应报文(服务器端生成 cookie 信息)--- 请求报文(自动发送保存着的 cookie 信息)

参考:
https://my.oschina.net/chumingcheng/blog/634801