作为前端工程师,需要掌握哪些 HTTP 知识??

    互联网/前端 56次点击 · 1191天前 · 焦糖花蜜罐
如何用COUPDAYSNC函数计算结算日到支付日的天数?Excel表格技巧—下拉单元格填充框数据递减的方法? 焦糖花蜜罐

1条回答我要回复

    轻狂绕过时光1191天前


      编者:最近在网上看了几篇文章,都是跟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到页面显示整个过程到底发生了什么
      终极问题来了,用户从浏览器输入“www.baidu.com”,直到渲染出页面都发什么了什么?可以把这个问题简单分解一下,客户端是怎样发起请求的?服务端怎样响应请求?客户端如何解析HTML并渲染页面的?还有,重排和重绘又是什么?发生在哪些时机?如何避免呢?

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

       

    请先登录后,再回复