HTTP 协议知识点汇总

2019-08-21  本文已影响0人  MercuryWang

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。

HTTP 相关问题

  1. HTTP 协议的主要特点?
    • 简单快速,每个资源 URI--统一资源符 是固定的,比如图片、页面地址;
    • 灵活,头部分的数据类型,通过一个 HTTP 协议可以完成不同类型数据的传输;
    • 无连接,连接一次就断掉,不会保持连接;
    • 无状态,客户端和服务端是两种身份,HTTP 协议仅帮助传输,不能在两次连接确定身份;
  2. HTTP 报文的组成部分?
    • 请求报文:请求行、请求头、空行、请求体;
    • 请求行:HTTP 方法,页面地址,HTTP 协议以及版本;
    • 请求头:key value 值,告诉服务端要请求的内容;
    • 空行:位于请求头和请求体之间的空行;
    • 请求体:请求参数穿成的字符串 param1=value1&param2=value2;
    • 响应报文:状态行、响应头、空行、响应体;
  3. HTTP 方法?
    • GET, POST, PUT 更新,DELETE, HEAD 获得报文首部;
  4. POST 和 GET 的区别?
    • GET 在浏览器回退时是无害的,而 POST 会再次提交请求;
    • GET 产生的 URL 地址可以被收藏,而 POST 不可以;
    • GET 请求会被浏览器主动缓存,而 POST 不会,除非手动设置;
    • GET 请求只能进行 URL 编码,而 POST 支持多种编码方式;
    • GET 请求参数会被完整保留在浏览器历史记录中,而 POST 中的参数不会被保留;
    • GET 请求在 URL 中传递的参数是有长度限制的,而 POST 没有限制;
    • 对参数的数据类型,GET 只接受 ASCII 字符,而POST 没有限制;
    • GET 比 POST 更不安全,因为参数直接暴露在 URL 上,所以不能用来传递敏感信息;
    • GET 参数通过 URL 传递,POST 放在 Request body 中;
  5. HTTP 状态码?
    • 1XX: 指示信息 -- 表示请求已接收,继续处理;
    • 2xx: 成功 -- 表示请求已被成功接收。 200 OK: 客户端请求成功, 206 partial content: 客户端发送了一个带有 range 头的 GET 请求,服务器完成了它;
    • 3xx: 重定向 -- 要完成请求必须进行更进一步操作。301 Moved Permanently: 所请求的页面已经转移至新 URL; 302 found: 所请求的页面已经临时转移至新 URL;304 Not Modified: 客户端有缓冲的文档并发出了一个条件性的请求,服务器告诉客户,原来缓冲的文档还可以继续使用;
    • 4xx: 客户端错误 -- 请求语法错误或请求无法实现。400 Bad request: 客户端请求有语法错误,不能被服务器所理解; 401 Unauthorized: 请求未经授权,这个状态码必须和 WWW-Anthenticate 报头域一起使用;403 Forbidden: 被请求页面的访问被禁止; 404 Not found: 请求资源不存在;
    • 5xx: 服务端错误 -- 服务器未能实现合法的请求。500 Internal Server Error: 服务器发生不可预期的错误,原来缓冲的文档还可以继续使用;503 Server Unavailable: 请求未完成,服务器临时过载或宕机,一段时间后可能恢复正常;
  6. 什么是持久连接?
    • HTTP 协议采用“请求-应答”模式,当使用普通模式,即非 Keep-Alive 模式时,每个请求/应答客户端和服务器都需新建一个连接,完成之后立即断开连接(HTTP 协议为无连接协议);
    • 当使用 Kepp-Alive 模式(有称持久连接、连接重用)时,Keep-alive 功能是客户端到服务器端的连接持续有效,当出现对服务器的后继请求时,Keep-alive 功能避免了建立或者重新建立连接;
  7. 什么是管线化?
    • 在使用持久连接的情况下,某个连接上消息的传递类似于:请求1 -> 响应1 -> 请求2 ->响应2 -> 请求3 -> 响应3;
    • 某个连接上的消息变成了类似这样:请求1 -> 请求2 -> 请求3 -> 响应1 ->响应2 -> 响应3;
    • 管线化机制通过持久连接完成,仅 HTTP/1.1 支持此技术;
    • 只有 GET 和 HEAD 请求可以进行管线化,而 POST 则有所限制;
    • 初次创建连接时不应启动管线机制,因为对方(服务器)不一定支持 HTTP/1.1 版本的协议;
    • 管线化不会影响响应到来的

总结:
1、https是为了给http的加密,防止用户信息被不法分子盗用;
2、https除了对称加密、非对称加密之外,还引入了一个类似公证人的联合机构组织,作为信息交换过程中双向加密的中转站;
3、这种方式并不代表绝对安全,因为没有绝对的安全系统;

上一篇 下一篇

猜你喜欢

热点阅读