Cookie 常见面试题
本文已收录至 Github,欢迎 Star:https://github.com/Jackson0714/PassJava-Learning
个人网站:www.passjava.cn
面试常见题
1.Cookie 是什么?★☆
2.Cookie 能做什么?★☆
3.Cookie 是怎么分类的?★☆
4.Cookie 的工作原理?★★★
5.Cookie 是怎么存储的?★☆
6.每次访问网站时,是不是将所有的 cookie 都发送所有的站点?★
7.cookie 与缓存怎么取舍?★★
8.cookie 的缺点?★★
9.如何使用 cookie?★★★
看完这些题目,心中是否有疑惑呢?那就接着看呗,我来帮您解答心中的疑惑 o(^▽^)o
参考答案
1.Cookie 是什么?★☆
cookie 时当前识别用户,实现持久化会话的最好方式。简单点说就是服务器知道正在和哪个客户端通信,以及保持与已识别出的客户端通信。Cookie 的基本思想就是让浏览器积累一组服务器特有的信息,每次访问服务器时都将这些信息提供给它。
2.Cookie 能做什么?★☆
对连接另一端的用户有更多的了解,并且能在用户浏览页面时对其进行跟踪。
3.Cookie 是怎么分类的?★☆
(1)会话 cookie。临时 cookie,记录了用户访问站点时的设置和偏好。用户退出浏览器时,会话 cookie 就被删除了。
(2)持久 cookie。持久 cookie 的生存时间更长一些;它们存储在硬盘上,浏览器退出,计算机重启时它们仍然存在。通常会用持久 cookie 维护某个用户会周期性访问的站点的配置文件或登录名。
唯一区别就是它们的过期时间。如果设置了 Discard 参数或没有设置 Expires 或没有设置 Max-Age 参数则说明这个 cookie 就是一个会话 cookie。
4.Cookie 的工作原理?★★★
(1)用户首次访问 Web 站点时,Web 服务器对用户一无所知。
(2)Web 服务器通过 Set-Cookie 首部将 cookie 存放到浏览器中的 cookie 数据库中。cookie 中包含了 N 个键值对,例如 Cookie: id=“1234”。cookie 中可以包含任意信息,但它们通常都只包含一个服务器为了进行跟踪而产生的独特的识别码。
(3)将来用户再次访问同一站点时,浏览器会从 cookie 数据库中挑中那个服务器设置的 cookie,并在 cookie 请求首部中(Cookie: id=“1234”)将其传回给服务器。
(4)服务器可以通过 id="1234"这个键值对来查找服务器为其访问积累的信息(购物历史、地址信息等)。
注意:cookie 并不仅限与 ID 号。很多 Web 服务器都会将信息直接保存在 cooki 中。比如 Cookie: name="Tom"; phone="111-2222"
5.Cookie 是怎么存储的?★☆
浏览器负责存储 cookie 信息。不同的浏览器会以不同的方式来存储 cookie。有的浏览器用 cookis.txt 存储。有的浏览器存储在高速缓存目录下独立的文本文件中。
6.每次访问网站时,是不是将所有的 cookie 都发送所有的站点?★
不是,浏览器通常只向每个站点发送 2~3 个 cookie。原因如下:
(1)对所有这些 cookie 字节进行传输会严重降低性能。
(2)cookie 中包含的时服务器特有的名值对,对大部分站点来说,大多数 cookie 都只是无法识别的无用数据。
(3)将所有的 cookie 发送给所有站点会引发潜在的隐私问题,那些你并不信任的站点也会获得你只想发给其他站点的信息。
7.cookie 与缓存怎么取舍?★★
cookie 是私有的,浏览器不希望得到的 cookie 和其他浏览器的 cookie 相同。一般缓存 cookie 图片而不缓存文本。
8.cookie 的缺点?★★
存在安全隐患。第三方 Web 站点使用持久 cookie 来跟踪用户就是对 cookie 一种最大的滥用。将这种做法与 IP 地址和 Referer 首部信息结合在一起,这些营销公司就可以构建起相当精确的用户档案和浏览模式信息。
9.如何使用 cookie?★★★
Cookie 首部用在浏览器发送的 request 中。它会将所有与域、路径和安全过滤器相匹配的未过期 cookie 都发送给这个站点。所有 cookie 都被组合到一个 cookie 首部中。
欢迎关注我的公众号:「悟空聊架构
」
作者简介:8 年互联网职场老兵|全栈工程师|90 后超级奶爸|开源践行者|公众号万粉原创号主。 蓝桥签约作者,著有《JVM 性能调优实战》专栏,手写了一套 7 万字 SpringCloud 实战总结和 3 万字分布式算法总结。 欢迎关注我的公众号「悟空聊架构」,免费获取资料学习。
我是悟空,努力变强,变身超级赛亚人!
版权声明: 本文为 InfoQ 作者【悟空聊架构】的原创文章。
原文链接:【http://xie.infoq.cn/article/513ebae8d6e3f4c3056b769f4】。
本文遵守【CC BY-ND】协议,转载请保留原文出处及本版权声明。
评论