前端工程师到底需要掌握哪些 HTTP 知识才能过好这一生?

最近在网上看了几篇文章,都是跟HTTP有关,作为一个支撑起整个互联网 web 应用运转的协议,程序开发人员如果对此不了解,日子肯定不好过的。但是话说回来,如果给自己的职业进行一定范围的限制,就限定在前端工程师,到底需要掌握多少 HTTP 的知识才能过好这一生呢?端端君大致的整理了一下,包含大致以下方面:http特点,报文,缓存,状态码,方法,cookie, 跨域方式,持久连接和管线化,浏览器输入URL到页面显示整个过程到底发生了什么等等。我能想到的还是有限,仅是抛砖引玉,记录自己思考的同时也希望对其他人有所帮助,所以,也欢迎评论交流补充。

http特点

提起 http,肯定会想到无状态,无连接。无状态的话网站是如何记录用户的状态呢?cookie是干嘛的?为什么购物网站搜了一次鼠标,以后很多网站都会有小窗推荐鼠标?三次握手是个什么东西?多次请求是不是可以少握几次?

当然,http 是比较灵活的。它是怎么实现不同数据类型的传输的?

报文

报文分为请求报文和响应报文。请求报文又分为请求行,请求头,请求体。响应报文分为响应行,响应头,响应体。

那么问题来了,报文之间是怎么换行的?和Linux的换行一样吗?url出现在哪里?服务端通过什么来解析请求消息的?POST请求既然没有规定消息体的编码方式,那么都可以使用哪些方式来编码?

缓存

浏览器的缓存主要有强缓存和协商缓存。强缓存的话只用 expires 为什么不好?协商缓存只用 last-modified 也不够准确呢?

状态码

常见的的状态码有12345大类。301 和 302 有啥区别?什么情况下会有 304?

方法

HTTP方法有GET,POST,PUT,DELETE,HEAD。

那么问题来了,GET 和 POST 有啥区别?

cookie

cookie 本身是用于服务端和客户端通信的,因为具备存储功能,所以也被借用了。

那么问题来了, cookie 怎样设置和获取? cookie 有什么缺点? localStorage 和 SessionStorage 有什么优点?

跨域方式

简单归纳一下跨域可以有以下几个方式:hash,postMessage,JSONP,CORS,Websocket等等。

那么问题来了,这几种跨域原理是什么?有什么限制?特定应用场景?

持久连接和管线化

持久连接需要在请求头加入 connection: keep-alive.

那么问题来了,长连接对 http 版本有什么要求? 管线化是什么?请求响应的过程是怎样的?管线化需要注意什么?

浏览器输入URL到页面显示整个过程到底发生了什么

可以把这个问题简单分解一下,客户端是怎样发起请求的?服务端怎样响应请求?客户端如何解析HTML并渲染页面的?

还有,重排和重绘又是什么?发生在哪些时机?如何避免呢?

总结:

HTTP的内容稍微一列就会很多。以上仅仅是基础知识,只能说作为一个前端工程师掌握以上内容会比较好过一些。随着我们的知识和实践经验的积累,技术的边界也会越扩越大,也会发现更多 HTTP 的奥秘,总之,多的是,你不知道的事。

参考链接:

https://developer.mozilla.org/zh-CN/docs/Web/HTTP/Overview

https://imququ.com/post/four-ways-to-post-data-in-http.html

  • 发表于:
  • 原文链接:http://kuaibao.qq.com/s/20180428G1EEZJ00?refer=cp_1026
  • 腾讯「云+社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。

扫码关注云+社区

领取腾讯云代金券