HTTP协议这个重要的知识点是不可忽略的,这个知识点,通常在一些大厂笔试中会出现,而且,面试官也会问到关于这方面的问题。
HTTP简介
HTTP协议是位于应用层的一种协议,是无状态协议,表示服务器不会在两个请求之间保留任何数据(状态), HTTP协议通常基于TCP/IP层,
上面这个题目就是今年字节跳动校招的笔试题之一,这题就提到了Response Header,下面来了解一下
- Cache-Control
通常用于消息头字段,被用于在http请求和响应中,然后通过指定的指令实现缓存机制。在这需要注意的是,缓存指令为单向,在请求中设置的指令,不一定会被包含在响应当中
语法
指令不区分大小写,有可选参数,可以用令牌或带引号的字符串语法。多个指令时用逗号分隔开。
- Expires
响应头包含日期,时间, 就是在此时候之后,响应就会过期
- Age
一个非负整数,表示消息对象在缓存代理服务器中存贮的时长,以秒为单位。
Age消息头的值通常接近于0。表示此消息对象刚刚从原始服务器获取不久;其他的值则是表示代理服务器当前的系统时间与此应答消息中的通用消息头 Date 的值之差
- Date
Date 是一个通用首部,这其中包含了报文创建的日期和时间
- Do Not Track
DNT (Do Not Track) 请求首部表明了用户对于网站追踪的爱好。它能允许用户指定自己是否更注重个人隐私还是定制化内容
0
表示用户愿意目标站点追踪用户个人信息
1
表示用户不愿意目标站点追踪用户个人信息
- Transfer-Encoding
Transfer-Encoding 消息首部指明了将 entity 安全传递给用户所采用的编码形式
逐跳传输消息首部,仅仅应用于两个节点之间的消息传递,而不是所请求的资源本身
- X-Frame-Options
用来给浏览器 指示允许一个页面 可否在 <frame>, <iframe>, <embed>
或者 <object>
中展现的标记,站点可以通过确保网站没有被嵌入到别人的站点里面,从而避免 clickjacking
攻击
接下来,看看面试常见的Get和Post的区别
- get通过url传递参数,而post一般用于 表单的提交。
- get请求在url中传递的参数有长度限制,一般2K-8K,IE限制2K,而post请求是将参数和值存放在请求体中,理论上是没有限制的。
- get比post更不安全,get在请求过程中,请求参数会拼接在url之后,而post是将参数放在请求体body中,相对于用户来说不可见。
- get请求参数会被完整保留在浏览历史记录里,而 post 中的参数不会被保留。
- get 请求在浏览器中反复的
回退/前进
操作是没有影响,而 post 会再次提交表单请求 - get请求会浏览器主动cache,而post不会,除非手动的设置。