面试多年,每当我问起面试者对HTTP的了解时,个个回答令我瞠目结舌,这些开发者都有3-5年的经验。请不要让我叫你野生程序员,是时候了解HTTP了,让我们当个正规军。

起因

面试官:请问你了解HTTP协议吗?

前端开发:这不是应该后端清楚的吗?

后端开发:这不是前端知道的吗?

面试官:……

我们先一本正经的来了解下HTTP(不包含传输层TCP),然后总结其中的精华回复面试官。

HTTP协议简介

HTTP(超文本传输协议)是应用层上的一种客户端/服务端模型的通信协议,它由请求和响应构成,且是无状态的。(暂不介绍HTTP2)

  • 协议

协议规定了通信双方必须遵循的数据传输格式,这样通信双方按照约定的格式才能准确的通信。

  • 无状态
    无状态是指两次连接通信之间是没有任何关系的,每次都是一个新的连接,服务端不会记录前后的请求信息。

  • 客户端/服务端模型

    五层网络模型

URL构成

用了这么久,你注意过吗?

协议内容

请求(Request)

客户端发送一个HTTP请求到服务端的格式:

  • 请求行

  • 请求头

  • 请求体

    响应(Response)

服务端响应客户端格式:

  • 状态行

  • 响应头

  • 响应体

    状态码

HTTP状态码由三个十进制数字组成,第一个十进制数字定义了状态码的类型,后两个数字没有分类的作用。HTTP状态码共分为5种类型:

更详细的状态码可查看 HTTP状态码

但一般我们只需要知道几个常见的就行,比如 200,400,401,403,404,500,502.

请求方法

截止到HTTP1.1共有下面几种方法:

请求和响应常见通用头

注意

Content-Type,内容类型,一般是指网页中存在的Content-Type,用于定义网络文件的类型和网页的编码,决定浏览器将以什么形式、什么编码读取这个文件。

常见的媒体格式类型如下:

以application开头的媒体格式类型:

常见请求头


常见响应头


总结

清楚的知道这些内容,不仅仅是为了应对面试官,而是能实实在在的提高自己的效率,这一点在前后端联调接口最明显,当你在应用中去请求其他接口或转发请求时这些也是要知道的。不然出现问题的概率会大大提高。

一个HTTP打趴80%面试者的更多相关文章

  1. 金三银四背后,一个 Android 程序员的面试心得

    回顾一下自己这段时间的经历,九月份的时候,公司通知了裁员,我匆匆忙忙地出去面了几家,但最终都没有拿到offer,我感觉今年的寒冬有点冷.到十二月份,公司开始第二波裁员,我决定主动拿赔偿走人.后续的面试 ...

  2. 一个两年Java的面试总结

    前言 16年毕业到现在也近两年了,最近面试了阿里集团(菜鸟网络,蚂蚁金服),网易,滴滴,点我达,最终收到点我达,网易offer,蚂蚁金服二面挂掉,菜鸟网络一个月了还在流程中...最终有幸去了网易.但是 ...

  3. 安利一个基于Spring Cloud 的面试刷题系统。面试、毕设、项目经验一网打尽

    推荐: 接近100K star 的Java学习/面试指南 Github 95k+点赞的Java面试/学习手册.pdf 今天给小伙伴们推荐一个朋友开源的面试刷题系统. 这篇文章我会从系统架构设计层面详解 ...

  4. 我一个五年Android开发,居然被一个技术不如我的面试官嫌弃了......

    背景 首先介绍一下自己的情况.目前所在的是一家小的创业公司,待了5年多,薪资一般吧.由于这几年公司也在转型.工作经历大概可以分为 3 个阶段. 第一阶段是从进公司开始做 android app 开发, ...

  5. Nginx一个server主机上80、433,http、https共存

    如果一站点既要80 http访问,又要443https访问. 要让https和http并存,不能在配置文件中使用ssl on,配置listen 443 ssl; 实例 server { listen ...

  6. 80%面试官不知道的dubbo → 【redis注册中心】

    dubbo的redis注册中心配置和注意事项 配置provider和consumer项目的pom.xml,增加如下2个依赖: org.apache.commons commons-pool2 2.4. ...

  7. 透视HTTP协议,带你拨开纷繁复杂的表象

    一个HTTP,打趴80%面试者! HTTP是一个在计算机世界里专门在两点之间传输文字.图片.音频.视频等超文本数据的约定和规范.如果你不懂HTTP协议,那就相当于是个只有半桶水的程序员. 在这个专栏中 ...

  8. 一个五年 Android 开发者百度、阿里、聚美、映客的面试心经

    花絮 也许会有人感叹某些人的运气比较好,但是他们不曾知道对方吃过多少苦,受过多少委屈.某些时候就是需要我们用心去发现突破点,然后顺势而上,抓住机遇,那么你将会走向另外一条大道,成就另外一个全新的自我. ...

  9. 一个资深java面试官的“面试心得”

    在公司当技术面试官几年间,从应届生到工作十几年的应聘者都遇到过.先表达一下我自己对面试的观点: 1.笔试.面试去评价一个人肯定是不够准确的,了解一个人最准确的方式就是“路遥知马力,日久见人心”.通过一 ...

随机推荐

  1. php优秀框架codeigniter学习系列——CI_Input类学习

    这篇文章主要介绍CI核心框架工具类CI_Input. 根据CI文档自己的定义,该类用来: 提前处理全局变量,以保证安全; 提供一些帮助函数用来处理输入数据. 以下选取类中的重点方法进行说明. __co ...

  2. find a lover

    #version_s#1.8#version_e# #update_s#https://files.cnblogs.com/files/dyh221/update_1.zip#update_e#

  3. centos6.5安装Mysql5.6及更改密码

    (一) centos6.5安装Mysql5.6 二进制文件安装的方法分为两种: 第一种是不针对特定平台的通用安装方法,使用的二进制文件是后缀为.tar.gz的压缩文件: 第二种是使用RPM或其他包进行 ...

  4. Qt自定义控件系列(一) --- 圆形进度条

    本系列主要使用Qt painter来实现一些基础控件.主要是对平时自行编写的一些自定义控件的总结. 为了简洁.低耦合,我们尽量不使用图片,qrc,ui等文件,而只使用c++的.h和.cpp文件. 由于 ...

  5. Excel 常用属性的一小部分

    1.由于工作需要,最近积累了一些Excel中的相关知识,特此记录 Workbooks xlbooks = xlApp.Workbooks; Workbook xlbook = xlbooks.Add( ...

  6. Integer与String的知试点(java中常见面试题)

    1.==符号使用 Integer a = 1000,b=1000; Integer c = 100,d=100; System.out.println(a==b); System.out.printl ...

  7. Mac下截屏方法

    Refer to:https://zh.wikihow.com/在Mac-OS-X上截取屏幕截图 先来说几个需要用到的Mac键盘和普通键盘不一样的名字: Mac键盘 普通键盘 control Ctrl ...

  8. format() expandtabs() 输入表格数据

    1 输入表格数据 format(self, *args, **kwargs): # known special case of str.format """ S.form ...

  9. 基于CDH5.12安装Kylin及官方用例测试

    1 kylin 简介 Apache Kylin是2013年由eBay 在上海的一个中国工程师团队发起的.基于Hadoop大数据平台的开源 OLAP引擎,它采用多维立方体预计算技术,利用空间换时间的方法 ...

  10. Unity3D UGUI实现Toast

    项目中有些信息需要以Toast的形式体现出来,不需要交互,弹出后一段时间后消失,多个Toast会向上重叠,下面是一个UGUI Toast的实现,动画部份用到了Dotween来实现 首先需要制作Toas ...