文章目录

  • 事件冒泡的机制
    • 传递过程的参数
  • cookies sessionStorage localStorage
    • 基本概念
      • Cookie
        • cookie是什么?
        • cookie作用是什么?
      • localStorage
      • sessionStorage
    • 安全性
    • 异同
    • session
      • cookie和session的区别
      • sessionID(桥梁)

事件冒泡的机制

菜鸟答的:

事件冒泡机制就是事件点击之后,事件会由点击的元素向上传递,例如:div里面有span,那么点击span的事件也会传递到点击div上面去。

HR说我回答的有点问题,HR说什么IE的冒泡机制是由上到下,其实他是错误的。

这里可能HR把事件的捕捉和冒泡搞混淆了。

见代码:

<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><meta http-equiv="X-UA-Compatible" content="IE=edge"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>Document</title><style>.wrapper,.wrapper1,.wrapper2{width: 500px;height: 500px;background-color: aqua;display: table-cell;vertical-align: middle;}.content,.content1,.content2{width: 100px;height: 100px;background-color: red;margin: auto;}.span1,.span11,.span12{display: inline-block;width: 30px;height: 30px;background-color: green;}</style>
</head>
<body><div class="wrapper"><div class="content"><span class="span1"></span></div></div><div class="wrapper1"><div class="content1"><span class="span11"></span></div></div><div class="wrapper2" onclick="fun1()"><div class="content2" onclick="fun2()"><span class="span12" onclick="fun3()"></span></div></div>
</body>
<script>document.querySelector(".wrapper").addEventListener("click",function(){alert("最外面的div被点击");});document.querySelector(".content").addEventListener("click",function(){alert("第二层的div被点击");});document.querySelector(".span1").addEventListener("click",function(){alert("最里面的span被点击");});document.querySelector(".wrapper1").addEventListener("click",function(){alert("最外面的div被点击");},true);document.querySelector(".content1").addEventListener("click",function(){alert("第二层的div被点击");},true);document.querySelector(".span11").addEventListener("click",function(){alert("最里面的span被点击");},true);function fun1(){alert("最外面的div被点击");}function fun2(){alert("第二层的div被点击");}function fun3(){alert("最里面的span被点击");}
</script>
</html>

传递过程的参数

cookies sessionStorage localStorage

这里菜鸟回答的是:
这三个我以前写过博客,现在不太记得了,只知道一个是当前界面有效,一个是保存在本地,然后cookie是和服务器传值,可以在网络请求的header中设置cookie

基本概念

Cookie MDN

Cookie

Cookie 是小甜饼的意思,顾名思义,cookie 确实非常小,它的大小限制为4KB左右。它的主要用途有保存登录信息,比如:你登录某个网站市场可以看到“记住密码”,这通常就是通过在 Cookie 中存入一段辨别用户身份的数据来实现的。

cookie是什么?

其实cookie 是由网络服务器存储在你电脑硬盘上的一个txt类型的小文件,它和你的网络浏览行为有关,所以存储在你电脑上的cookies就好像你的一张身份证 ,你电脑上的cookie和其他电脑上的cookie是不一样的;cookie不能被视作代码执行,也不能成为病毒,所以它对你基本无害。

cookie作用是什么?

cookie的作用主要是,当你访问了某些网页,并且对网页的一些设置进行修改,cookie就能跟踪并记录到这些修改,当你下一次访问这个网页的时候,这个网页会分析你电脑上的cookie,进而采取措施像你返回更符合你个性化的网页;当然,目前大部分广告的定位基础也是基于cookie的,比如:你此前访问了大量的健身类网站,cookie记录了你的访问行为,广告主就能够根据你的访问行为,向你推送健身类的广告。

localStorage

localStorage 是 HTML5 标准中新加入的技术,它并不是什么划时代的新东西。早在 IE 6 时代,就有一个叫 userData 的东西用于本地存储,而当时考虑到浏览器兼容性,更通用的方案是使用 Flash。而如今,localStorage 被大多数浏览器所支持,如果你的网站需要支持 IE6+,那以 userData 作为你的 polyfill(一文搞清楚前端 polyfill) 的方案是种不错的选择。

sessionStorage

sessionStorage 与 localStorage 的接口类似,但保存数据的生命周期与 localStorage 不同。sessionStorage 是一个前端的概念,它只是可以将一部分数据在当前会话中保存下来,刷新页面数据依旧存在。但当页面关闭后,sessionStorage 中的数据就会被清空

这里sessionStorage localStorage可以看菜鸟的博客:
重学前端 HTML5 Web 存储(缓存)/HTML5 Web SQL 数据库/HTML5 应用程序缓存(第八天)

安全性

需要注意的是,不是什么数据都适合放在 Cookie、localStorage 和 sessionStorage 中的。使用它们的时候,需要时刻注意是否有代码存在 XSS 注入的风险。因为只要打开控制台,你就随意修改它们的值,也就是说如果你的网站中有 XSS 的风险,它们就能对你的 localStorage 肆意妄为。所以千万不要用它们存储你系统中的敏感数据。

这里HR又说错了,他说什么localStorage会加密,其它不会加密,一脸懵逼,我当时还当真了!

异同


cookie 数据始终在同源的http请求中携带(即使不需要),都会在浏览器和服务器间来回传递。

sessionStorage和localStorage不会自动把数据发给服务器,仅在本地保存。

sessionStorage和localStorage 虽然也有存储大小的限制,但比cookie大得多,可以达到5M或更大

session

既然都讲了cookie,干脆就把session也一起讲了

cookie和session的区别

  1. 作用范围不同,Cookie 保存在客户端(浏览器),Session 保存在服务器端(保存会话信息) --> Session 弥补了 HTTP 无状态特性,服务器可以利用 Session 存储客户端在同一个会话期间的一些操作记录。
  2. 存取方式的不同,Cookie 只能保存 ASCII,Session 可以存任意数据类型,一般情况下我们可以在 Session 中保持一些常用变量信息,比如说 UserId 等。
  3. 有效期不同,Cookie 可设置为长时间保持,比如我们经常使用的默认登录功能,Session 一般失效时间较短,客户端关闭或者 Session 超时都会失效。
  4. 隐私策略不同,Cookie 存储在客户端,比较容易遭到不法获取,早期有人将用户的登录名和密码存储在 Cookie 中导致信息被窃取;Session 存储在服务端,安全性相对 Cookie 要好一些。
  5. 存储大小不同, 单个 Cookie 保存的数据不能超过 4K,Session 可存储数据远高于 Cookie。

sessionID(桥梁)

用户第一次请求服务器的时候,服务器根据用户提交的相关信息,创建创建对应的 Session ,请求返回时将此 Session 的唯一标识信息 SessionID 返回给浏览器,并通过响应头的 Set-Cookie:JSESSIONID=XXXXXXX 命令,向客户端发送要求设置 Cookie 的响应,浏览器接收到服务器返回的 SessionID 信息后,会将此信息存入到 Cookie 中,同时 Cookie 记录此 SessionID 属于哪个域名

当用户第二次访问服务器的时候,请求会自动判断此域名下是否存在 Cookie 信息,如果存在自动将 Cookie 信息也发送给服务端(有时候也需要自己设置),服务端会从 Cookie 中获取 SessionID,再根据 SessionID 查找对应的 Session 信息,如果没有找到说明用户没有登录或者登录失效,如果找到 Session 证明用户已经登录可执行后面操作。

注意:

微信小程序不会自动向http请求头中加入cookie,所以服务器每一次被请求都会重新和其进行连接,所以要自己设置cookie。具体见:
微信小程序项目遇见问题三:有时候undefined不一定就是undefined | 解决微信小程序每次request请求,Cookie不一样 | request 获取不到返回值

感谢:
你真的了解 Cookie 和 Session 吗?
Session、Cookie、Token 【浅谈三者之间的那点事】

2021 肯特面试题2相关推荐

  1. 2021滴滴笔试题算法题

    2021滴滴笔试题 编程题第一题: 大概是:一个优秀的操作系统,应该具有一个好的分配任务的算法,现在假设 一个任务具有等待时间和执行时间,且必须在先等待后执行,而计算机每次只能执行一个任务,但可以等待 ...

  2. 2021年安全员-B证(广西省-2021版)找解析及安全员-B证(广西省-2021版)试题及解析

    题库来源:安全生产模拟考试一点通公众号小程序 安全员-B证(广西省-2021版)找解析是由公众号安全生产模拟考试一点通提供,安全员-B证(广西省-2021版)证模拟考试题库是根据安全员-B证(广西省- ...

  3. 2021年前端面试题总结

    2021年前端面试题总结 1.git 命令 $ git init //在目录中创建新的Git仓库 $ git status //查看仓库状态 $ git add //提交到暂存区 $ git comm ...

  4. 2021前端面试题系列:fetch与axios、浏览器内多个标签页面通信及安全问题

    大家好,我是前端岚枫,今天主要跟大家分享我整理的笔记2021前端面试题系列:fetch与axios.浏览器内标签页之间的通讯方法.XSS 和CSRF以及如何防范,此方面内容在我们的工作中常用到, 也是 ...

  5. 2021前端面试题系列:HTTP请求和HTTP缓存控制

    大家好,我是前端岚枫,一枚二线城市的程序媛,今天主要跟大家分享我整理的笔记2021前端面试题系列:HTTP请求和HTTP缓存控制,此方面内容在我们的工作中常用到, 也是面试官经常提问的问题,希望下面文 ...

  6. 西邮 Linux 兴趣小组 2021 纳新试题

    1. 请试着解释其输出 int main(int argc , char *argv[]) {unsigned char a = 255;char ch = 128;a -= ch;printf(&q ...

  7. 农行2021计算机专业面试题,2021年农业银行面试备考:半结构化往年面试题(五)...

    广东银行招聘网整理了银行结构化面试历年试题集,考生可以查阅学习,为即将到来的面试做足准备! 2021农业银行面试备考:半结构化往年面试题(五) 你的简历中提到,你曾在学生会工作过,请谈谈你在学生会工作 ...

  8. 农行2021计算机专业面试题,2021农业银行总行笔试试题答案(考生回忆)-行测

    原标题:2021农业银行总行笔试试题答案(考生回忆)-行测 2021农业银行总行笔试与9月13日进行,中公金融人为大家提供了农业银行总行笔试行测试题的答案,方便大家提前了解笔试成绩,做好后期的笔试备考 ...

  9. 2021软件测试面试题汇总【备战金九银十】内容较长建议收藏

    一.面试基础题 简述测试流程: 1.阅读相关技术文档(如产品PRD.UI设计.产品流程图等). 2.参加需求评审会议. 3.根据最终确定的需求文档编写测试计划. 4.编写测试用例(等价类划分法.边界值 ...

最新文章

  1. Php如何发出请求,PHP中如何发送HTTP请求?
  2. Hadoop中Block和Split区别
  3. 进阶的“车厘子自由”,进化的“淘宝特价版”
  4. js 动态拼接html 正则,在JavaScript中使用动态(可变)字符串作为正则表达式模式...
  5. 数据可视化(三)- Seaborn简易入门
  6. 的写法_朋友圈文案标题的写法
  7. 论文中的图片处理方法
  8. Atitit  rgb yuv  hsv HSL 模式和 HSV(HSB) 图像色彩空间的区别
  9. linux 中文ssid 显示乱码,两招解决网络设置 支持中文SSID
  10. 上班太无聊,我要考证 之 程序员考证
  11. 全机房最蒟蒻的讲堂_第二期_论qwq和颜文字
  12. android倒影效果,Android实现图片的倒影效果案例分析
  13. 【资源分享(免积分)】增长黑客_创业公司的用户与收入增长秘籍 - 范冰(高清版免费).pdf
  14. Gluster管理命令的总结与归纳
  15. 高度自律学习者的app
  16. 小程序容器助力车企抢滩智慧车载新生态
  17. IPv6和IPv4的区别
  18. 暗影精灵4适合计算机专业,暗影精灵4什么时候出?今日发布,为专业电竞而生...
  19. 办公室必备-上班偷看小说利器
  20. SitePoint Podcast#180:David Lee King的Face2Face

热门文章

  1. Mac 安装旧版本Xcode教程以及出现文件已损坏的解决办法
  2. Redis主从数据不一致及读取过期数据问题的解决方案
  3. c++:训练3控制台输出汉字,用cout输出汉字“明日科技”
  4. python长的横线怎么打_关于Python的前后、单双下划线作用,看完这篇文章,吊打面试官!...
  5. 程序员自学成才指南﹣老程序员四条自学经验
  6. selenium爬取上市公司全部行业及分行业股票行情数据
  7. 部分窗帘甲醛残留多会损害健康
  8. Android 使用Canvas+Paint画虚线
  9. 阿里云pts做性能测试
  10. 金融交易行为监测方法——利用 CNN 模型实现行为识别