GET 和POST的区别有哪些
区别一:幂等性
1.由于GET是读,POST是写,所以GET是幂等的,POST不是幂等的。
2.由于GET是读,POST是写,所以用浏览器打开网页会发送GET请求,想要POST 打开网页要用form 标签。
3.由于GET是读,POST是写,所以GET打开的页面刷新是无害的,POST打开的页面刷新需要确认
4.由于GET是读,POST是写,所以GET结果会被缓存,POST结果不会被缓存,
5.由于GET是读,POST是写,所以GET打开的页面可被签收藏,POST打开的不行
区别一:请求参数
1.通常,GET请求参数放在url里,POST请求数据在body(消息体)里
2.GET 比 POST更不安全,因为参数直接暴露在URL上,所以不能来传递敏感信息
3.GET 请求参数在url里是有长度限制的,而POST放在body里没有长度限制
区别三:TCP packet
- GET 产生一个TCP 数据包,POST 产生两个或以上TCP数据包
!!根据技术规格文档,GET和POST最大的区别是语义,但面试官一般问的是实践过程中二者的区别,因此你需要了解服务器和浏览器对GET和POST的常见实现方法
HTTP缓存有哪些方案
HTTP 1.1
缓存(强缓存): Cache-Control:max-age=3600
(自动缓存1小时,一个小时之内,如果有人再次访问同样的URL,同样的路径,同样的查询参数,就直接不发请求 )
Etag:ABC
文件的特征值
使用特征值 来查询
内容协商(弱缓存):if-None-Match:ABC 响应状态码 :304表示不需要删除缓存
或200 删除 一般会附带一个body 最新的JS内容
强缓存就是问都不问 遇到请求就直接用,除非文件被删除
弱缓存就是强缓存过期后,这个缓存要不要留着 ,协商下原特征值和最新文件特征值一样就留着(304),不一样就删除
HTTP 1.0
缓存(强缓存): Expires:Wed,21Oct 2015 02:30:00 GMT (缺点 用户时间错乱)
Last-Modified:Wed,21 Oct 2015 01:00:00 GMT(一个文件一秒修改多次,无法区分是否最新)
内容协商(弱缓存): If-Modified-Since:Wed,21 Oct 2015 01:00:00 GMT GMT
响应状态码: 304 或200
根据本地时间告诉缓存是否失效
根据更新时间来判定是否删除缓存 要删除返200 不要返304、
pragma MDN已经明确不推荐使用它
HTTP 和HTTPS的区别有哪些?
HTTPS = HTTP+SSL/TLS(安全层)
区别列表
1.HTTP是明文传输的,不安全;HTTPS是加密传输的 。非常安全。
2.HTTP使用80端口,HTTPS使用443端口
3.HTTP较快,HTTPS较慢
4.HTTPS的证书一般需要购买(但是也有免费的),HTTP不需要证书。
TCP三次握手和四次挥手是什么?
建立TCP 连接时server 鱼client 会经历三次握手
1.浏览器向服务器发送TCP数据:SYN(seq=x)
2.服务器向浏览器发送TCP数据:ACK(seq=x+1)SYN(y)
3.浏览器向服务器发送TCP数据:ACK(seq=y+1)
关闭TCP 连接时server 鱼client 会经历四次挥手
1.浏览器向服务器发送TCP数据:FIN(seq=x)
2.服务器向浏览器发送TCP数据:ACK(seq=x+1)
3.服务器向浏览器发送TCP数据:FIN(seq=y)
4.浏览器向服务器发送TCP数据:ACK(seq=y+1)
为什么2,3 步骤不合并起来
答:2,3 中间服务器很可能还有数据要发送,不能提前发送FIN
说说同源
同源策略是什么?
如果两个URL的协议,端口和域名都完全一致的话,则这两个URL是同源的
同源策略怎么做?
只能在浏览器里打开页面,就默认遵守同源策略。
有点
保证用户的隐私安全和数据安全
缺点
很多时候,前端需要访问另外一个域名的后端接口,会被浏览器阻止其获取响应。
比如甲站点通过AJAX访问已站点的/money查询余额接口,请求贵发出,但是响应会被浏览器屏蔽。
怎么解决缺点?
使用跨域手段。
- JSONP(前端体系课有完整且详细的介绍)
a. 甲站点利用script 标签可以跨域的特性,向乙站点发送get请求
b.乙站点后端改造JS文件的内容,将数据传进回调函数
c.甲站点通过回调函数拿到乙站点的数据
2.CPRS(前端体系课有完整且详细的介绍)
a. 对于简单请求,乙站点在响应里添加 xxx 即可
b. 对于复杂请求,如PATCH,乙站点需要:
i:响应OPTIONS请求,在响应中添加如下的响应头
c. 如果需要附带身份信息,JS中需要在AJAX里设置
Session,Cookie,LocaIStorage.SessionStorage的区别
*Cookie V.S.LocalStorage
1.主要区别是Cookie 会被发送到服务器,而LocalStorage不会
2.Cookie 一般最大4k,LocaIStorage 可以用5Mb甚至10Mb(各种浏览器不同)
2.Cookie 一般最大4k,LocaIStorage 一般不会自动过期(除非用户手动清除)