阅读 140

HTTP知识点的回顾总结

HTTP

HTTP的特点和缺点

特点:无连接无状态灵活简单快速

  • 无连接:每一次请求都要连接一次,请求结束就会断掉,不会保持连接

  • 无状态:每一次请求都是独立的,请求结束不会记录连接的任何信息,减少了网络开销,这是优点也是缺点

  • 灵活:通过http协议中头部的 Content-Type 标记, 可以传输任意数据类型的数据对象(文本、图片、视频等),非常灵活

  • 简单快速:发送请求访问某个资源时,只需传送请求方法和URL就可以来,使用简单,正由于http协议简单,使得http服务器的程序规模小,因而通信速度很快

缺点:无状态不安全明文传输对头阻塞

  • 无状态:请求不会记录任何链接信息,没有记忆,就无法区分多个请求发起者身份是不是同一个客户端的,意味着如果后续处理需要前面的信息,则它必须重传,这样可能导致每次链接传送的数据量增大

  • 不安全:明文传输可能被窃听不安全,缺少身份认证也可能遭遇伪装,还有缺少报文完整性验证可能遭到篡改

  • 明文传输:报文(header部分)使用的是明文,直接将信息暴露给了外界,wifi陷阱就是复用明文传输的特点,诱导你连上热点,然后疯狂抓取你的流量,从而拿到你 敏感信息

  • 对头阻塞:开启长链接时,只建立一个TCP连接,同一时刻只能处理一个请求,那么当请求耗时过长时,其他请求就只能阻塞状态。

HTTP 报文组成部分

http报文:由 请求报文响应报文 组成

请求报文:由 请求行请求头空行请求体 四部分组成

响应报文:由 状态行响应头空行响应体 四部分组成

  • 请求行:包含http方法,请求地址, http协议以及版本

  • 请求头/响应头:就是一些key:value来告诉服务端我要哪些内容,要注意什么类型等,请求头/响应头每一个字段详解

  • 空行:用来区分首部和实体,因为请求头都是key:value的格式,当解析遇到空行时,服务端就知道下一个不再是请求头部分,就该当做请求体来解析了。

  • 请求体:请求的参数

  • 响应体:服务端返回的数据

HTTP 请求方法 (9种)

HTTP1.0: GETPOSTHEAD

HTTP1.1:PUTPATCHDELETEOPTIONSTRACECONNECT

|  方法  |  描述  | |  ---   |: --- :| |  GET   | 获取资源     | |  POST    |   传输资源,通常会造成服务器资源的修改     | |  HEAD    |   获得报文首部     | |  PUT    |   更新资源     | |  PATCH    |   对PUT的补充,对已知资源部分更新     | |  DELETE    |  删除资源      | |  OPTIONS    |   列出请求资源支持的请求方法,用来跨域请求     | |  TRACE    |   追踪请求/响应路径,用于测试或诊断     | |   CONNECT   |  将连接改为管道方式用于代理服务器(隧道代理)      |

GET 和 POST 的区别

  • GET 在浏览器回退时是无害的,而 POST 会再次发起请求

  • GET 请求会被浏览器主动缓存,而 POST 不会,除非手动设置

  • GET 请求参数挥着保留在浏览器历史记录里, 而 POST 中的参数不会被保留

  • GET 请求在 URL 中传递的参数有长度限制(浏览器限制大小不同),而 POST 没有限制

  • GET 参数通过 URL 传递, POST 放在 Request body

  • GET 产生的URL地址可以被收藏,而 POST 不可以

  • GET 没有 POST 安全,因为 GET 请求参数直接暴露在 URL 上, 所以不能用来传递敏感信息

  • GET 请求只能进行 URL 编码, 而 POST 支持多种编码方式

  • 对参数的数据类型, GET 只接受 ASCII 字符,而 POST 没有限制

  • GET 产生一个 TCP 数据包,POST 产生两个数据包(Firefox只发一次)。GET 浏览器把 http header 和 data 一起发出去,响应成功200,POST先发送 header,响应100 continue, 再发送data,响应成功200

常见 HTTP 状态码

1xx:提示信息————表示请求已接收,继续处理

2xx:成功————表示请求已被成功接收

3xx:重定向————表示要完成请求必须进行进一步操作

4xx:客户端错误————表示请求有语法错误或请求无法实现

5xx:服务端错误————表示服务器未能实现合法的请求

状态码描述
200请求成功
206已完成指定范围的请求,场景如video,audio播放文件较大,文件分片时
301永久重定向
302临时重定向
304请求资源未修改,可以使用缓存的资源,不用在服务器取
400请求有语法错误
401没有权限访问
403服务器拒绝执行请求,场景如不允许直接访问,只能通过服务器访问时
404请求资源不存在
500服务器内部错误,无法完成请求
503请求未完成,因服务器过载,死机或维护等

HTTP  和 HTTPS 的区别

  • HTTP 是 明文传输,不安全的, HTTPS 是 加密传输, 安全的多

  • HTTP 标准端口是 80, HTTPS 标准端口是 443

  • HTTP 不用认证证书 免费, HTTPS 需要认证证书 要钱

  • 连接方式不同, HTTP 三次握手, HTTPS中TLS1.2版本7次,TLS1.3版本6次

  • HTTP 在 OSI 网络模型中是在 应用层, 而 HTTPS 的TLS是在 传输层

  • HTTP 是 无状态 的, HTTPS 是 有状态

HTTPS优缺点

优点:

  • 内容加密,中间无法查看原始内容

  • 身份认证,保证用户访问正确。如访问百度,即使DNS被劫持到第三方站点,也会提醒用户没有访问百度服务,可能被劫持

  • 数据完整性,防止内容被第三方冒充或篡改

  • 虽然不是绝对安全,但是现行架构下最安全的解决文案了,大大增加了中间人的攻击成本

缺点:

  • 要钱,功能越强大的证书费用越贵

  • 证书需要绑定IP,不能在同一个IP上绑定多个域名

  • https双方加解密,耗费更多服务器资源

  • https 握手更耗时,降低一定用户访问速度(优化好就不是缺点了)


作者:前端一休
链接:https://juejin.cn/post/7036674544660119582


文章分类
代码人生
文章标签
版权声明:本站是系统测试站点,无实际运营。本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 XXXXXXo@163.com 举报,一经查实,本站将立刻删除。
相关推荐