面试必问之http以及浏览器相关知识

时间:2024-08-12 14:07:32
/**
1、HTTP以及HTTPS概念
HTTP是超文本传输协议,是一个用于传输超媒体文档的应用层协议,被用于在web浏览器和网站服务器之间,以明文方式传递信息,
不提供任何方式的饿数据加密,因此使用http传输隐私信息非常不安全; 为了解决这一安全缺陷,网景公司设计了SSL协议,在http基础上加入ssl协议,依靠证书来验证服务器的身份,并为
浏览器和服务器之间的通信进行加密,从而产生了HTTPS;
**/ /**
2、HTTP状态码有哪些? HTTP 响应状态代码指示特定 HTTP 请求是否已成功完成。
响应分为五类:
信息响应(100–199);
成功响应(200–299);
重定向(300–399);
客户端错误(400–499);
服务器错误 (500–599); 常用的有:
200(ok) 请求成功
404(Not Found) 服务器找不到请求的网页
405(禁用) 禁用请求中指定的方法
408(请求超时) 服务器等候请求时发生超时
500(服务器错误) 服务器内部错误 服务器遇到错误,无法完成请求
504(服务器网关超时) 当服务器作为网关,不能及时得到响应时返回此错误代码。
**/ /**
2、HTTP与HTTPS有什么区别? HTTPS在传输数据之前需要客户端(浏览器)与服务端(网站)之间进行一次握手,在握手过程中将确立双方加密传输数据的密码信息
a、HTTPS协议需要到CA申请证书,需要花钱买;
b、HTTP协议 = TCP,HTTPS协议 = TCP+SSL;
c、HTTP信息是明文传输,HTTPS是加密传输;
d、HTTP的url以http://开头,HTTPS的url以https://开头
e、HTTP的端口为80,HTTPS的端口为443;
**/ /**
3、浏览器存储方式有哪些?
a、cookie: 一般由服务器生成,可以设置过期时间,数据存储大概4k,,每次会携带在header中,对弈请求性能影响;
b、session
c、localStorage:除非被清理,否则一直存在,数据存储大概5M
d、sessionStorage:页面关闭就清理,数据存储大概5M 注意: localStorage和sessionStorage自带getItem和setItem,只能存取字符串,存取JSON数据需配合JSON.stringify()和JSON.parse();
遇见禁用setItem的浏览器,需要使用try...catch捕获异常; cookie和session的区别:
1、存在的位置:cookie是存储在客户端,session是存储在服务器端;
2、cookie是以明文的方式放在客户端的,安全性低,可以通过一个加密算发进行加密后存放,
session存放于服务器的内存中,所以安全性性好;
3、cookie为多个用户浏览器共享,session为一个用户浏览器独享; **/ /**
4、地址栏输入url后会发生什么? 1、DNS域名解析(解析成ip地址,走UTP协议,因此不会握手过程):
浏览器将 URL 解析出相对应的服务器的 IP 地址(
1. 本地浏览器的 DNS 缓存中查找
2. 再向系统DNS缓存发送查询请求
3. 再向路由器DNS缓存
4. 网络运营商DNS缓存
5. 递归搜索),
并从 url 中解析出端口号
2、浏览器与目标服务器建立一条 TCP 连接(三次握手)
3、浏览器向服务器发送一条 HTTP 请求报文
4、服务器返回给浏览器一条 HTTP 响应报文
5、浏览器进行渲染
6、关闭 TCP 连接(四次挥手) **/ /**
5、页面渲染优化? 1、HTML文档结构层次尽量少,最好不深于6层;
2、脚本尽量放后边,避免阻止页面加载;
3、少量首屏样式可以放在便签内;
4、样式结构层次尽量简单;
5、脚本减少DOM操作,减少回流,尽量缓存访问DOM的样式信息;
6、尽量减少JS修改样式,可以通过修改class名的方式解决;
7、减少DOM查找,缓存DOM查找结果;
8、动画在屏幕外活页面滚动时,尽量停止; **/ /**
6、get和post的区别? 1、get参数通过url传递,post放在body中(http协议规定,url在请求头中,所以大小限制很小);
2、get相比post不够安全,因为参数直接暴露在url中,所以不能用来传递敏感信息;
3、get在浏览器回退时是无害的,而post会再次提交请求;
4、对参数的数据类型,get只接受ASCII字符,而POST没有限制; **/