v博客前言

先交代下背景,写这个系列的原因是总结自己遇到的面试题以及可能遇到的题目,更重要的是,今年定的目标是掌握网络这一块的知识点,先是搞懂HTTP协议,然后是TCP/IP协议,再就是WCF如何运用这些协议更好地工作。

 

不惧面试:HTTP协议(1) - 基础扫盲

不惧面试:HTTP协议(2) - 网关、隧道和中继

不惧面试:HTTP协议(3) - Cookie

不惧面试:HTTP协议(4) - 安全HTTP

不惧面试:HTTP协议(5) - 基本认证机制

持续更新中...

面试常见题:

  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?★★★

Set-Cookie首部用在服务器返回的response中。它有一个强制性的cookie名和cookie值。后面跟着可选的cookie属性,中间由分号分隔。

Set-Cookie属性

说明

例子

NAME=VALUE

强制的。NAME和VALUE都是字符序列。Web服务器可以创建任意的NAME=VALUE关联,在后继对站点的访问中会将其送回给Web服务器:

Set-Cookie:Name=Tom

Expires

可选的。日期字符串。定义cookie的实际生存期。一旦过了过期日期,就不再存储或发布这个cookie了。

Set-Cookie:Name=Tom; expires=Wednesday,09-Nov-99 20:00:00 GMT

Domain

可选的。浏览器只向指定域中的服务器主机名发送cookie。这样服务器就将cookie限制在了特定的域中。

Set-Cookie:Name=Tom; domain:"cnblogs.com"

Path

可选的。通过这个属性可以位服务器上特定的文档分配cookie。

Set-Cookie:Name=Tom; path=/abc用户访问http://www.abc123.com 可能获得一个cookie: Name=Tom

当用户访问http://www.abc123.com/test.html  可能获得两个cookie,其中一个是之前已经获得cookie: Name=Tom,另外一个是cookie:page=test。

Secure

可选的。如果包含了这一属性,就只有在HTTP使用SSL安全连接时才会发送cookie。

Set-Cookie:Name=Tom; secure

Cookie首部用在浏览器发送的request中。它会将所有与域、路径和安全过滤器相匹配的未过期cookie都发送给这个站点。所有cookie都被组合到一个cookie首部中。

Cookie: Name1=Tom; Name2=Jerry

作  者:
Jackson0714

出  处:http://www.cnblogs.com/jackson0714/

关于作者:专注于微软平台的项目开发。如有问题或建议,请多多赐教!

版权声明:本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文链接。

特此声明:所有评论和私信都会在第一时间回复。也欢迎园子的大大们指正错误,共同进步。或者直接私信

声援博主:如果您觉得文章对您有帮助,可以点击文章右下角推荐一下。您的鼓励是作者坚持原创和持续写作的最大动力!

支付宝/微信打赏:

不惧面试:HTTP协议(3) - Cookie的更多相关文章

  1. 不惧面试:HTTP协议(1) - 基础扫盲

    v博客前言 先交代下背景,之前在一家公司面试.NET开发,去了先是做一份笔试题,有一半是关于HTTP协议的,技术总监直接面试,也是问一大堆HTTP协议的知识点,可能跟该公司的产品有关,该公司属于互联网 ...

  2. HTTP协议 (七) Cookie

    HTTP协议 (七) Cookie Cookie是HTTP协议中非常重要的东西, 之前拜读了Fish Li 写的[细说Cookie], 让我学到了很多东西.Fish的这篇文章写得太经典了. 所以我这篇 ...

  3. HTTP协议 (七) Cookie(转)

    add by zhj: 客户端通过request header:cookie将cookie发给服务端,而服务端通过response header: set-cookie将cookie传回客户端 一条c ...

  4. 转:Http协议中Cookie详细介绍

    Http协议中Cookie详细介绍 Cookie总是保存在客户端中,按在客户端中的存储位置,可分为内存Cookie和硬盘Cookie.内存Cookie由浏览器维护,保存在内存中,浏览器关闭后就消失了, ...

  5. http协议之cookie标准RFC6265介绍

      [Docs] [txt|pdf] [draft-ietf-httpst...] [Diff1] [Diff2] [Errata] PROPOSED STANDARD Errata Exist In ...

  6. http无状态协议,cookie和session详解(一)

    1.HTTP无状态协议 首先看百度百科给出的定义: HTTP无状态协议,是指协议对于事务处理没有记忆能力.缺少状态意味着如果后续处理需要前面的信息,则它必须重传, 这样导致可能每次连接传送的数据量增大 ...

  7. http协议、cookie及session

    1. HTTP协议是无连接的 网页操作--浏览器--Http协议--web服务器(appache/IIS) 无连接的 每次连接只处理一个请求,服务器处理完并收到客户端应答,即断开连接 目的:节省传输时 ...

  8. Http协议中Cookie使用详细介绍

    Cookie总是保存在客户端中,按在客户端中的存储位置,可分为内存Cookie和硬盘Cookie.内存Cookie由浏览器维护,保存在内存中,浏览器关闭后就消失了,其存在时间是短暂的.硬盘Cookie ...

  9. 面试 04-HTTP协议

    04-HTTP协议 一面中,如果有笔试,考HTTP协议的可能性较大. #前言 一面要讲的内容: HTTP协议的主要特点 HTTP报文的组成部分 HTTP方法 get 和 post的区别 HTTP状态码 ...

随机推荐

  1. 写一篇 Bootstrap弹窗确认的文章。本周完成

    思路; 点击按钮,显示模态 点击确定,异步提交 根据结果,删除指定的记录

  2. 安装及配置jdk和tomcat

    系统变量 新建 JAVA_HOME 变量 .变量值填写jdk的安装目录(如是 E:\Java\jdk1.7.0_25) 系统变量→找到 Path 变量→编辑 在变量值最后输入 %JAVA_HOME%\ ...

  3. 搭建go语言idea开发环境

    1.首先下载golang安装包,并配置好环境变量,此处略去相关操作,可能需要搭梯子. 2.下载idea golang插件,并安装: 下载地址如下: https://plugins.jetbrains. ...

  4. JS内存泄漏排查方法——Chrome Profiles

    一.概述 Google Chrome浏览器提供了非常强大的JS调试工具,Heap Profiling便是其中一个.Heap Profiling可以记录当前的堆内存(heap)快照,并生成对象的描述文件 ...

  5. Grunt插件之LiveReload 实现页面自动刷新,所见即所得编辑

    苦B的前端每次在制作和修改页面时,都有一个特定的三部曲:coding-save-F5.很多时候都希望自己一改东西,页面就能立刻显示,而现在LiveReload就能做到这点. LiveReload会监控 ...

  6. 1.1.Core Data是什么(Core Data 应用程序实践指南)

    Core Data是个框架,把数据当作对象来操作. 由Core Data提供的数据对象叫托管对象(managed objecgt),而Core Data 位于程序和持久化存储区之间. 托管对象模型里有 ...

  7. EverNote剪藏插件安装问题

    安装EverNote印象笔记的剪藏插件时出现插件不能使用的问题,可以采用如下的方法(可以参考知乎的解决办法:https://www.zhihu.com/question/29875051) (下载地址 ...

  8. 淘宝的数据库拆分(TDDL)(转)

    淘宝的数据拆分历程 系 统刚开始的时候,因为系统刚上线,用户不多,那个时候,所有的数据都放在了同一个数据库中,这个时候因为用户少压力小,一个数据库完全可以应付的了,但是 随着运营那些哥们辛苦的呐喊和拼 ...

  9. Angular - - $interpolate 和 $parse

    $interpolate 将一个字符串编译成一个插值函数.HTML编译服务使用这个服务完成数据绑定. 使用:$interpolate(text,[mustHaveExpression],[truste ...

  10. 为什么delphi控件前面都有t

    控件的类名都有一个T字, 它是Type的第一个字母. 比如按钮就是TButton. 但在Delphi的控件面板上的并不带T字, 比如就是Button. 如果你把它放在窗体上, 默认名字则成为Butto ...