背景

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

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

304协商缓存

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

这时就到了你展示一下自己丰富的浏览器缓存知识的时候了。我一般会这么答:浏览器缓存分为强制缓存和协商缓存,优先读取强制缓存。

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

而协商缓存包括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 的一些经验分享(一)

面试必考之http状态码有哪些相关推荐

  1. 10 道大厂面试必考的计算机网络问题-陶辉 极客时间

    大厂中更多会考察你的长板. 在大厂中要学会求助 1.TCP的三次握手机制,为什么要三次? 为什么需要握手? 需要同步序列号,当然也有MSS(最大报文段长度),滑动窗口. 为什么是3次? 正常想法应该是 ...

  2. 面试必考的网络协议相关题目应该如何回答

    转载自  面试必考的网络协议相关题目应该如何回答 最近,正处于校招季.很多小伙伴已经拿到了如愿以偿的Offer,有些小伙伴还在努力着. 平常,也会有一些粉丝会在公众号留言,或者在微信上问我一些面试题. ...

  3. 最强Java面试题全部合集,涵盖BAT大厂面试必考的9大技术!-强烈建议收藏

    过去2年我持续分享了BAT TMD为代表的大厂最新面试题目,特别是蚂蚁金服.天猫.淘宝.头条.拼多多等Java面试题目. 过去2年,我已经成功的帮助了部分同学进入了大厂. 2020开始,我依然会为大家 ...

  4. 线程同步有几种方法_架构师面试必问的多线程状态切换及常用方法

    架构师面试必问的多线程状态切换及常用方法 一.问题背景 Java架构师面试中,多线程状态切换及常用方法几乎是必问的,要掌握创建多线程的方式和方法. 二.创建多线程的几种方式 2.1方式一继承Threa ...

  5. 环形链表【手绘漫画】面试必考之双指针(LeetCode 141)

    文章目录 图解算法与数据结构 1.前言 2.实例 3.正文 4.代码 图解算法与数据结构 1.前言 今天开始的是双指针! 下面一起来看看吧!!! 让我们从一个经典问题开始: 环形链表进阶版[手绘漫画] ...

  6. 175 道面试必考 Go 语言题目详细解答

    随着2010年代初云计算的兴起,这一转变掀起了浪潮.各大互联网巨头在技术战略层面,都试图把握此次潮流,举起了云计算的大旗. 随着云计算时代愈演愈烈,Go 语言的应用也越来越广泛,已然成为首选编程语言. ...

  7. js面试必考:this

    this是前端面试中必考的基础知识点,也是新手小白在做项目中经常晕头转向的问题.但其实this不难理解. 判断this指向时,记住以下几点: 判断函数类型, 1.1 如果是箭头函数,则为第一个包裹箭头 ...

  8. Java 面试必考难点,这一个教程全搞定

    "用代码行来衡量开发进度,无异于用重量来衡量制造飞机的进度." - Bill Gates 作为当下应用面最广泛的编程语言,Java 已经被广泛应用于几乎所有领域,包括 web 应用 ...

  9. Linux进程O(1)调度算法,面试必考哦

    进程调度有很多方法,这里只讨论Linux下的进程调度,先说下,这个是高端面试必考题,既然我发文了,大家最好看看,而且目前看到的写得最好的文章,推荐给大家. ==== Linux是一个支持多任务的操作系 ...

最新文章

  1. 2022-2028年中国大飞机项目产业链分析及投资咨询报告
  2. spring基于注解的IOC以及IoC的案例——概念
  3. android textview 文字居中_Android布局优化,看这3点就够了
  4. 构造方法注入和设值注入有什么区别?
  5. SAP Spartacus项目执行yarn prettier-fix命令之后的输出
  6. Java并发(二十一):线程池实现原理
  7. pc网站和移动网站在同一服务器吗,机动都市阿尔法PC服和移动服互通吗
  8. Golang make chan 第二个参数(size)
  9. mysql 一个文章多个分类_jdbc mysql 插入一篇文章并与多个标签,一个分类建立关联关系。...
  10. 在python中的使用Libsvm
  11. Atitit session的概念总结
  12. 超市商品管理系统(C++)
  13. 敏捷开发 SCRUM 简介
  14. 软件项目管理大作业:项目内容介绍
  15. python里打印空格_python打印空格
  16. 《不能承受的生命之轻》
  17. 【成神之路】Mysql相关面试题
  18. 软考(14)-接入网技术-sonet/sdh
  19. Caffe—根据log日志绘制loss曲线和accuracy
  20. [信息论与编码]离散信源及其信息测度(2)

热门文章

  1. 【Unity】12.5 Navmesh Obstacle组件
  2. C#使用ICSharpCode.SharpZipLib.dll压缩文件夹和文件
  3. Java异常之异常机制
  4. Linux下备份系统
  5. 记《浪潮之巅》-第一版-12.短暂的春秋--与机会失之交臂的公司之一太阳公司(sun microsystems)...
  6. 性能调优常见问题与方案
  7. yum 搭建 LNMP
  8. linux中文乱码问题及locale详解
  9. VS2012下基于Glut OpenGL glScissor示例程序:
  10. 常见字符串拼接性能比较