当精力有限时,想一下眼下本身最看重什么,有选择性的取舍,将宝贵的时间投入到产出比最大的事情上。面试
根据计划,第一章节介绍【软件测试理论】部分,目前已输出十篇文章:npm
第一篇:软件测试的目的【杂谈】浏览器
第二篇:软件测试七大原则【干货】缓存
第三篇:软件测试新七大原则【干货】安全
第四篇:软件测试的分类【笔记】服务器
第五篇:软件测试的方法【笔记】cookie
第六篇:软件测试的工具【笔记】框架
第七篇:如何作好业务测试【杂谈】工具
第八篇:如何作好接口测试【杂谈】测试
第九篇:HTTP协议常见状态码【干货】
第十篇:HTTP协议常见面试题一【干货】
下面开始个人第十一篇文章,分享【HTTP协议常见面试题二】(接着上一篇继续)。
6、缓存
- 强缓存
- 经过设置Expires和Cache-Control实现。强缓存表示在缓存期间不须要发起请求,状态码为200
- Expires是HTTP/1的产物,值为缓存的过时时间
- Cache-control出现于HTTP/1.1,优先级比Expires高
- Expires指定一个绝对的过时时间(GMT格式),这么作会致使至少2个
- 客户端和服务器时间不一样步致使Expires的配置出现问题
- 很容易在配置后忘记具体的过时时间,致使过时来临出现浪涌现象
- max-age 指定的是从文档被访问后的存活时间,这个时间是个相对值(好比:3600s),相对的是文档第一次被请求时服务器记录的Request_time(请求时间)
- Expires指定的时间能够是相对文件的最后访问时间(Atime)或者修改时间(MTime),而max-age相对对的是文档的请求时间(Atime)
- 在Apache中,max-age是根据Expires的时间来计算出来的max-age = expires- request_time:(mod_expires.c)
- 协商缓存
- 经过设置Last-Modified和ETag实现。若是缓存过时了,就须要发起请求验证资源是否有更新。若是发起请求验证资源没有改变,返回状态304,而且更新浏览器缓存的有效期。
- Last-Modified和If-Modified-Since:Last-Modified表示本地文件最后修改日期,If-Modified-Since会将Last-Modified的值发送给服务器,询问该日期以后的资源是否有更新,有就将新资源发送来,没有返回304状态码。
- ETag和If-None-Match:ETag出现于HTTP/1.1,他的优先级比Last-Modified高。ETag相似于文件的指纹,If-None-Match会将ETag发送给服务器,询问该ETag是否变更,有变更的话就将获取新的资源。
- Last-Modified 的问题在于它的精度在秒(s)的级别,比较适合不太敏感的静态资源。
- Nginx 官方默认的 ETag 计算方式是为"文件最后修改时间16进制-文件长度16进制"。
- Express 框架使用了 serve-static 中间件来配置缓存方案,使用了一个叫 etag 的 npm 包来实现 etag 计算
- 使用文件大小和修改时间
- 使用文件内容的hash值和内容长度
- F5与Ctrl+F5的区别
- F5:跳过强缓存,但会检查协商缓存
- Ctrl+F5:直接从服务器加载,跳过强缓存和协商缓存
- Cache-Control
- 若是咱们给咱们的cache-control设置了no-cache之后,每次浏览器发起设置了cache-control资源请求的时候,都会到服务器端进行资源的验证,验证完了之后,若是肯定这个资源能够使用缓存,才会读取本地的缓存。
- no-store 彻底不使用缓存
7、安全
- XSS:攻击者经过页面注入可执行的代码的攻击方式,防护方法:
- 将用户输入的内容,进行转义,过滤标签和标签属性
- 使用CSP告诉浏览器限制外部资源能够加载和执行,开启CSP有两种方式:
- 设置HTTP-Header中的Content-sesurity-Policy
- 设置标签的方式
- CSRF:跨站请求伪造,如获取cookie伪造用户登录状态,防护方法:
- 设置cookie的SameSite
- 验证Referer
- 登录后服务器下发一个随机token,以后的请求带上
8、三次握手
三次是最小的安全次数,为了让客户端和服务端都能肯定彼此发起和响应的能力是否靠谱
- 客户端发送SYN包
- 服务端接收到SYN包以后将SYN+ACK包发送给客户端
- 客户端接收到SYN+ACK包以后,向服务器发送确认包ACK
- 服务端接收到以后链接成功,开始传输数据
9、四次挥手
关闭链接是双向的,客户端和服务器均可以提出,四次挥手是为了避免让关闭太仓促,保证可靠性
- 客户端发送一个FIN,用来关闭客户到服务器的数据传送。
- 服务器收到这个FIN,它发回一个ACK,确认序号为收到的序号加1。
- 服务器关闭客户端的链接,发送一个FIN给客户端。
- 客户端发回ACK报文确认,并将确认序号设置为收到序号加1。
以上原文来自个人公众号【不仅是测试】,扫描加关注哦O(∩_∩)O~
