一面中,如果有笔试,考HTTP协议的可能性较大。
前言
一面要讲的内容:
HTTP协议的主要特点
HTTP报文的组成部分
HTTP方法
get 和 post的区别
HTTP状态码
什么是持久连接
什么是管线化
二面要讲的内容;
缓存
CSRF攻击
HTTP协议的主要特点
简单快速
灵活
无连接
无状态
通常我们要答出以上四个内容。如果实在记不住,一定要记得后面的两个:无连接、无状态。
我们分别来解释一下。
简单快速
简单:每个资源(比如图片、页面)都通过 url 来定位。这都是固定的,在http协议中,处理起来也比较简单,想访问什么资源,直接输入url即可。
灵活
http协议的头部有一个数据类型,通过http协议,就可以完成不同数据类型的传输。
无连接
连接一次,就会断开,不会继续保持连接。
无状态
客户端和服务器端是两种身份。第一次请求结束后,就断开了,第二次请求时,服务器端并没有记住之前的状态,也就是说,服务器端无法区分客户端是否为同一个人、同一个身份。
有的时候,我们访问网站时,网站能记住我们的账号,这个是通过其他的手段(比如 session)做到的,并不是http协议能做到的。
HTTP报文的组成部分

在回答此问题时,我们要按照顺序回答:
先回答的是,http报文包括:请求报文和响应报文。
再回答的是,每个报文包含什么部分。
最后回答,每个部分的内容是什么
请求报文包括:

请求行:包括请求方法、请求的url、http协议及版本。
请求头:一大堆的键值对。
空行指的是:当服务器在解析请求头的时候,如果遇到了空行,则表明,后面的内容是请求体。
请求体:数据部分。
响应报文包括:

状态行:http协议及版本、状态码及状态描述。
响应头
空行
响应体
HTTP方法
包括:
GET:获取资源
POST:传输资源
put:更新资源
DELETE:删除资源
HEAD:获得报文首部
HTTP方法有很多,但是上面这五个方法,要求在面试时全部说出来,不要漏掉。
get 和 post 比较常见。
put 和 delete 在实际应用中用的很少。况且,业务中,一般不删除服务器端的资源。
head 可能偶尔用的到。
get 和 post的区别

区别有很多,如果记不住,面试时,至少要任意答出其中的三四条。
有一点要强调,get是相对不隐私的,而post是相对隐私的。
我们大概要记住以下几点:
1、浏览器在回退时,get不会重新请求,但是post会重新请求。【重要】
2、get请求会被浏览器主动缓存,而post不会。【重要】
3、get请