#1
get 与 post 请求的本质区别?
本质上的区别:
GET和POST最大的区别主要是GET请求是幂等性的,POST请求不是。这个是它们本质区别。
幂等性:一次和多次请求某一个资源应该具有同样的副作用。
意味着对同一URL的多个请求应该返回同样的结果。
使用上:
get直接用url访问,post需要将数据放在body中。
get携带数据有限制,pos数据则可以很大。
post安全点,因为数据在地址栏上不可见
#2
http长连接和短连接是什么?http/1.0中默认使用?http/1.1呢?
1.0中,默认使用短连接。
1.1中,默认使用长连接。
短连接:
浏览器和服务器每进行一次HTTP操作,就建立一次连接,但任务结束就中断连接。
如果客户端浏览器访问的某个HTML或其他类型的 Web页中包含有其他的Web资源,如JavaScript文件、图像文件、CSS文件等;当浏览器每遇到这样一个Web资源,就会建立一个HTTP会话。
长连接:
使用长连接的HTTP协议,会在响应头有加入这行代码:Connection:keep-alive
在使用长连接的情况下,当一个网页打开完成后,客户端和服务器之间用于传输HTTP数据的 TCP连接不会关闭,如果客户端再次访问这个服务器上的网页,会继续使用这一条已经建立的连接。Keep-Alive不会永久保持连接,它有一个保持时间,可以在不同的服务器软件(如Apache)中设定这个时间。实现长连接要客户端和服务端都支持长连接。
#3
http和https之间的区别?5个角度对比,端口,安全性,资源消耗,证书需求,基础协议?
http: 80
https:443
http:无加密,不安全
http:资源消耗少,因为不需要加密
http:不需要证书
http:运行在TCP协议上。
https:SSL协议,SSL又基于TCP协议上
#4
浏览器中输入网站后,会发生什么?大致哪6步?
1. DNS域名解析:把域名变成ip,www.zhihu.com -> xxx.xxx.xxx.xxx
2. tcp(切割报文成段,然后发送)三次握手建立连接。浏览器挑选一个随机端口(1024-65535)向服务端web程序80端口发起tcp连接。
3. 之后,发起http请求。
4. 服务器接收到 http请求后,客户端获取到了html网页源代码。
5. 浏览器解析html代码,并请求html中的资源。
6. 浏览器对请求到的资源,按照源代码进行渲染展示给我们。
#5
cookie和session是啥?提示:客户和服务不同角度
Cookie:
存在于客户端
【服务器】发送到 【用户浏览器】 并保存在【本地】的一小块数据,它会在浏览器下次向同一服务器再发起请求时被【携带】并【发送】到服务器上。通常,它用于告知服务端两个请求是否来自同一浏览器,如保持用户的登录状态。Cookie 使基于无状态的 HTTP 协议记录稳定的状态信息成为了可能。
Session:
存储在服务端。
存储着特定用户会话所需要的属性及配置信息。
#6
Cookie和Session之间如何配合?
客户 ———-请求——->服务器 ———创建Session——>返回SessionID给客户的浏览器——>客户存储到本地Cookie中。
客户再——-请求———-请求查询该网站下有没有Cookie,有就携带发送。———->服务器获取Cookie中的SessionID核对服务器端的Session中的SessionID,如果有,可以访问登陆后的资源信息。
#7
分布式Session有什么问题?
在互联网公司为了可以支撑更大的流量,后端往往需要多台服务器共同来支撑前端用户请求,那如果用户在 A 服务器登录了,第二次请求跑到服务 B 就会出现登录失效问题。
分布式 Session 一般会有以下几种解决方案:
1.客户端存储:直接将信息存储在cookie中,cookie是存储在客户端上的一小段数据,客户端通过http协议和服务器进行cookie交互,通常用来存储一些不敏感信息
2.Nginx ip_hash 策略:服务端使用 Nginx 代理,每个请求按访问 IP 的 hash 分配,这样来自同一 IP 固定访问一个后台服务器,避免了在服务器 A 创建 Session,第二次分发到服务器 B 的现象。
3.Session 复制:任何一个服务器上的 Session 发生改变(增删改),该节点会把这个 Session 的所有内容序列化,然后广播给所有其它节点。
4.共享 Session:将用户的 Session 等信息使用缓存中间件(如Redis)来统一管理,保障分发到每一个服务器的响应结果都一致。
建议采用共享 Session的方案。