面试必考之http状态码有哪些

背景

http状态码有哪些,这也是一个很高频的面试问题。
通常你们都知道404页面不存在,500服务器错误,301重定向,302临时重定向,200ok,401未受权啥的。html

若是只是简单的这样答,可能只能让面试官给你的答案打个五六十分,不足以给面试官留下良好的印象,为了展示本身良好的http知识,你或许能够重点介绍三个状态码及相关的知识,他们分别是304协商缓存,101协议升级,以及307hsts跳转。前端

304协商缓存

先从304协商缓存开始吧。这是比较基础的知识。相信我,只要你提起304协商缓存,面试官必定会忍不住问你,什么是协商缓存?git

这时就到了你展现一下本身丰富的浏览器缓存知识的时候了。我通常会这么答:浏览器缓存分为强制缓存和协商缓存,优先读取强制缓存。github

强制缓存分为expires和cache-control,而expires是一个特定的时间,是比较旧的标准和cache-control一般是一个具体的时间长度,比较新,优先级也比较高。web

而协商缓存包括etag和last-modified,last-modified的设置标准是资源的上次修改时间,而etag是为了应对资源修改时间可能很频繁的状况出现的,是基于资源的内容计算出来的值,所以优先级也较高。面试

协商缓存与强制缓存的区别在于强制缓存不须要访问服务器,返回结果是200,协商缓存须要访问服务器,若是命中缓存的话,返回结果是304。浏览器

101协议升级

主要用于websocket,也能够用于http2的升级。缓存

websocket的特色和功效不细说,你们都很熟了。安全

http2好处多多,通常说出支持单个链接屡次请求,二进制,压缩头部,服务器推送等特征面试官就比较知足了。具体了解也是自行谷歌百度,这里也是不细说。服务器

固然这时候咱们可能要应对一下面试官接下来的追问:到底https,http,http2以及它的原形spdy有什么区别,又分别有什么优势和不足,他们的创建链接分别又有着什么环节,这些知识就须要读者本身去充分搜索查询了。

307 hsts跳转

这个比较高端,本来的用法是用于让post请求的跳转去新的post请求,但也用于hsts跳转。

hsts全称HTTP严格传输安全(HTTP Strict Transport Security,縮寫:HSTS),功能是要求浏览器下次访问该站点时使用https来访问,而再也不须要先是http再转https。这样能够避免ssl剥离攻击,即攻击者在用户使用http访问的过程当中进行攻击,对服务器冒充本身是用户,在攻击者和服务器中使用https访问,在用户和服务器中使用http访问。

具体使用方法是在服务器响应头中添加 Strict-Transport-Security,能够设置 max-age

固然,提到了ssl剥离攻击,你必定很感兴趣还有什么方法能够对号称安全的https进行攻击呢?我这里了解到的有ssl劫持攻击,大概就是信任第三方的安全证书,这点被利用于代理软件监听https。若是还有更多的,欢迎补充。

总结

仅仅三个状态码,均可以牵涉到如此丰富的知识,对于状态码,咱们不能只是片面的去背诵状态码及对应的含义,要去主动挖掘,深刻,借助http状态码来创建本身的网络体系。

留一个课后做业:301和302有什么区别?分别适用于什么场景?你还会只去记一个是永久重定向,一个是临时重定向吗?

本文章为前端进阶系列的一部分,
欢迎关注和star本博客或是关注个人github

参考

知道大家很懒,帮大家搜索好了相关资料

[浅谈浏览器http的缓存机制
](http://www.cnblogs.com/vajoy/...

http2讲解

HTTP,HTTP2.0,SPDY,HTTPS你应该知道的一些事
你所不知道的 HSTS

关于启用 HTTPS 的一些经验分享(一)

相关文章
相关标签/搜索