前端面试 -HTTP系列
http和https 的区别?
| 端口 | 经济 | 安全性 | 响应速度 | |
|---|---|---|---|---|
| http | 80端口 | 不需要 | 明文传输,安全性差 | 页面响应速度快,使用tcp的3次握手 |
| https | 443端口 | 费钱SSL需要ca 证书 | SSL加密 | 慢 还要加ssl的9个包 |
get和post请求区别?
| 请求参数 | 支持刷新 | 是否可被浏览器缓存 | 功能 | |
|---|---|---|---|---|
| get | 放在url里,并且长度受限制(2048字符)安全性较差 | 在浏览器中可直接访问可以刷新回退 | 可以 | 查数据 |
| post | 在请求体body中,长度不受限制 安全性好 | 不能在浏览器中直接访问 | 不能 | 增删改 |
TCP三次握手
- 建立连接时,客户端发送syn 同步序列编号 包(syn=j)到服务器 , 进入SYN_SENT状态
- 服务器收到syn包并发送确认包 ack(j+1) 和自己的syn(y)
- 客户端收到服务器的SYN+ACK包 ,向服务器发送ack确认(y+1)
TCP四次挥手
1.客户端发送FIN 连接释放报文
2.服务器收到FIN并发送确认包ACK
3.服务器发送FIN
4.客户端发送ACK
为什么2.3不合并起来,因为2.3中间有可能还有数据在发送,不能提前发送FIN
HTTP 缓存有哪几种?
两种 协商缓存和强制缓存, 根据是否需要向服务器重新发起HTTP请求 区分
强制缓存: 向浏览器缓存查找该请求结果 通过Cache-Control 和 Expires 决定是否使用缓存。
不存在则重新向服务器发送(像第一次)、存在则使用本地缓存、存在但失效了 协商缓存
协商缓存:向服务器请求结果, 由服务器根据缓存标识 Last-Modified / If-Modified-Since 和 Etag / If-None-Match 决定是否使用缓存的过程 成功304 失败返回200和请求内容
HTTP 状态码知道哪些?分别什么意思?
100 Continue 继续,一般在发送post请求时,已发送了http header之后服务端将返回此信息,表示确认,之后发送具体参数信息
200 OK 正常返回信息
201 Created 请求成功并且服务器创建了新的资源
202 Accepted 服务器已接受请求,但尚未处理
301 Moved Permanently 请求的网页已永久移动到新位置。
302 Found 临时性重定向。
303 See Other 临时性重定向,且总是使用 GET 请求新的 URI。
304 Not Modified 自从上次请求后,请求的网页未修改过。
400 Bad Request 服务器无法理解请求的格式,客户端不应当尝试再次使用相同的内容发起请求。
401 Unauthorized 请求未授权。
403 Forbidden 禁止访问。
404 Not Found 找不到如何与 URI 相匹配的资源。
500 Internal Server Error 最常见的服务器端错误。
503 Service Unavailable 服务器端暂时无法处理请求(可能是过载或维护)。
Cookie V.S. LocalStorage V.S. SessionStorage V.S. Session
cookie :一般由服务器返回客户端,报存到客户端,用于存用户登录信息。请求时会在header里,所有不安全。存储大小约5k
session:存在服务器端,用来保存每个用户的专信息。大小不限
webstorage :存在客户端,安全性高 大小为5M左右。
前端面试 -HTTP系列的更多相关文章
- 前端面试 -Vue2系列
vue 1为啥用Vue? 1MVVM 数据的双向绑定 2指令系统 不需要操作DOM 3组件化 2v-show和v-if.v-for v-show 通过 display:none 隐藏元素,DOM还在. ...
- 2019前端面试系列——JS面试题
判断 js 类型的方式 1. typeof 可以判断出'string','number','boolean','undefined','symbol' 但判断 typeof(null) 时值为 'ob ...
- 2019前端面试系列——Vue面试题
Vue 双向绑定原理 mvvm 双向绑定,采用数据劫持结合发布者-订阅者模式的方式,通过 Object.defineProperty()来劫持各个属性的 setter.getter,在数 ...
- 2019前端面试系列——JS高频手写代码题
实现 new 方法 /* * 1.创建一个空对象 * 2.链接到原型 * 3.绑定this值 * 4.返回新对象 */ // 第一种实现 function createNew() { let obj ...
- 2019前端面试系列——CSS面试题
盒模型 /* 红色区域的大小是多少?200 - 20*2 - 20*2 = 120 */ .box { width: 200px; height: 200px; padding: 20px; marg ...
- web前端面试试题总结---html篇
HTML Doctype作用?标准模式与兼容模式各有什么区别? (1).<!DOCTYPE>声明位于位于HTML文档中的第一行,处于 <html> 标签之前.告知浏览器的解析器 ...
- web前端面试总结
本文由我收集总结了一些前端面试题,初学者阅后也要用心钻研其中的原理,重要知识需要系统学习.透彻学习,形成自己的知识链.万不可投机取巧,临时抱佛脚只求面试侥幸混过关是错误的!也是不可能的! 前端还是一个 ...
- 【PC网站前端架构探讨系列】关于中小型PC网站前端架构方案的讨论与实践
目 录 1.遇到的问题 2.目标 3.探讨 4.架构设想 5.流程 6.初步实现 7.存在问题 8.最后 遇到的问题 我在这个系列上篇文章 已经讲解并开始逐步应用模块化思想,不知大家还记不记得,题 ...
- 问得最多的十个JavaScript前端面试问题
我知道有很多人不同意这种类型的面试.其实不管你喜不喜欢,你都得接受.尤其当你是自学的,而且要申请第一份工作时. 我估计很多有人其它方法来证明他自己,像Github/ 项目地址可能是非常理想的证明方 ...
随机推荐
- SpringDataJdbc使用数据库默认值的解决方法
SpringDataJdbc提供了 @ReadOnlyProperty 注解,这会造成由Repository保存的实体会忽略这个字段的值进行保存,进而采用数据库的默认值操作:而查询时这个字段也是能够查 ...
- Springboot添加静态资源映射addResourceHandlers,可实现url访问
@Configuration //public class WebMvcConfiger extends WebMvcConfigurerAdapter { public class WebMvcCo ...
- Semaphore 有什么作用 ?
Semaphore 就是一个信号量,它的作用是限制某段代码块的并发数.Semaphore 有一个构造函数,可以传入一个 int 型整数 n,表示某段代码最多只有 n 个线程可 以访问,如果超出了 n, ...
- 面试问题之数据库:SQL优化的具体操作
转载于:https://www.cnblogs.com/wangzhengyu/p/10412499.html SQL优化的具体操作: 1.尽量避免使用select *,返回无用的字段会降低查询效率. ...
- 两个链表有一个交点,如何在时间复杂度 O(n) 和 空间复杂度 O(1) 的条件下实现?_字节跳动面试题
输入两个链表,找出它们的第一个公共结点 我们可以首先遍历两个链表得到它们的长度,就能知道哪个链表比较长, 我们可以首先遍历两个链表得到它们的长度,就能知道哪个链表比较长,以及长的链表比短的链表多几个结 ...
- java-网络通信--socket实现多人聊天(基于命令行)
先编写最简答的服务器 思路 1编写一个实现Runnable接口的静态内部类 ServerC,便于区分每个客户端 1.1 获取客户端数据函数 public String remsg() 1.2 转发消息 ...
- 学习GlusterFS(三)
glusterfs,GNU cluster file system,创始人Anand Babu Periasamy,目标:代替开源Lustre和商业产品GPFS,glusterfs是什么: cloud ...
- 模拟web服务器http请求应答
我们在浏览器打开网页,其实是向远端服务器提出页面发送请求,远端服务器在接到请求后,就开始执行请求页面的程序文件,然后将执行结果通过html格式,发送到你的浏览器,再显示出来.以下用百度(www.bai ...
- web项目中视频的上传和展示
思路: 上传:<form>表单提交视频-->后台使用字节流保存到本地. 展示:<video>标签展示: src属性发送请求 --> 使用字节流将视频绑定到响应并返回 ...
- vue和mint-ui loadMore 实现上拉加载和下拉刷新
首先安装mint-ui组件库 npm install mint-ui 在main.js中引入mint-ui和样式 import 'mint-ui/lib/style.css' import MintU ...