`
java-mans
  • 浏览: 11498239 次
文章分类
社区版块
存档分类
最新评论

细说Cookies

 
阅读更多

什么是Cookies?

Cookies是一些小文件,它们被创建在客户端的系统里,或者被创建在客户端浏览器的内存中(如果是临时性的话)。用它可以实现状态管理的功能。我们可以存储一些少量信息到可以短的系统上,以便在需要的时候使用。最有趣的事情是,它是对用户透明的。在你的web应用程序中,你可以到处使用它,它极其得简单。Cookies是以文本形式存储的。如果一个web应用程序使用cookies,那么服务器负责发送cookies,客户端浏览器将存储它。浏览器在下次请求页面的时候,会返回cookies给服务器。最常用的例子是,使用一个cookie来存储用户信息,用户的喜好,“记住密码”操作等。Cookies有许多优点,当然也有许多缺点。我将在接下来讲述。

Cookies是如何创建的?

当一个客户端向服务器发出请求,服务器发送cookies给客户端。而相同的cookies可以被后续的请求使用。例如,如果codeproject.com将Session ID作为cookies存储。当一个客户端首次向web服务器请求页面,服务器生成Session ID,并将其作为cookies发送往客户端。


现在,所有来自相同客户端的后续请求,它将使用来自cookies的Session ID,就像下面这幅图片展示的那样。


浏览器和web服务器以交换cookies信息来作为响应。对不同的站点,浏览器会维护不同的cookies。如果一个页面需要cookies中的信息,当某个URL被“点击”,首先浏览器将搜索本地系统的cookies的信息,然后才转向服务器来获得信息。

Cookies的优势

下面是使用cookies的主要优势:

(1)实现和使用都是非常简单的

(2)由浏览器来负责维护发送过来的数据(cookies内容)

(3)对来自多个站点的cookies来讲,浏览器自动管理它们

Cookies的劣势

下面是cookies的主要劣势:

(1)它以简单的文本格式来存储数据,所以它一点也不安全

(2)对于cookies数据,有大小限制(4kB)

(3)Cookies最大数目也有限制。主流浏览器提供将cookies的个数限制在20条。如果新cookies到来,那么老的将被删除。有些浏览器能支持到300条的cookies数。

(4)我们需要配置浏览器,cookies将不能工作在浏览器配置的高安全级别环境下。

如何创建Cookies

为了使用cookies,我们首先需要引入System.Web这个命名空间:

  1. usingSystem.Web;

看下面的代码,来看看我们如何创建cookies以及如何将它加入到web响应中去:


Cookies被创建后将持续到浏览器关闭。我们可以使其持续更长的时间。该如何实现呢?我接下来将来讲解它

如何从Cookies中读取信息

在读取cookies之前,首先我们需要检查是否能找到该cookie。在读取cookies之前,先检查它总是一个很好的习惯,因为浏览器可能禁用cookies。


什么是持久化的和非持久化的Cookies

我们可以将cookies分成两类:

(1)持久化的cookies

(2)非持久化的cookies

持久化的cookies:这可以被称为永久性的cookies,它被存储在客户端的硬盘内,直到它们失效。持久化的cookies应该被设置一个失效时间。有时,它们会一直存在直到用户删除它们。持久化的cookies通常被用来为某个系统收集一个用户的标识信息。

非持久化cookies:也可以被称之为临时性的cookies。如果没有定义失效时间,那么cookie将会被存储在浏览器的内存中。我上面展示的例子就是一个非持久的cookies。

修改一个持久化的cookies与一个非持久化的cookies并没有什么不同。它们唯一的区别是——持久化的cookies有一个失效时间的设置。

怎样创建持久化的cookies

我已经给出了创建一个非持久化cookies的例子。对于持久化的cookies而言,我们需要为其定义一个过期时间。下面的代码中,我定义了一个持久化的cookies,因为我将其失效时间标识为5天。

  1. //CretingaCookieObject
  2. HttpCookie_userInfoCookies=newHttpCookie("UserInfo");
  3. //Settingvaluesinsideit
  4. _userInfoCookies["UserName"]="Abhijit";
  5. _userInfoCookies["UserColor"]="Red";
  6. _userInfoCookies["Expire"]="5Days";
  7. //AddingExpireTimeofcookies
  8. _userInfoCookies.Expires=DateTime.Now.AddDays(5);
  9. //Addingcookiestocurrentwebresponse
  10. Response.Cookies.Add(_userInfoCookies);

最有趣的事情是,它们到底存储在硬盘的什么地方呢?

Cookies到底存储在本地硬盘的什么地方

其中一个有趣的事情是知晓cookies在你硬盘的哪个地方。首先,进入浏览文件夹选项,选择“显示隐藏文件和文件夹”。


现在,导航到当前用户cookies的文件夹。看下面的这幅图:


怎样在它失效时间之前移除Cookies

这是一个有趣的任务。如果你想在失效时间之前移除持久化的cookies,唯一的方式就是用一个过去的时间作为失效时间来代替老的失效时间。

  1. HttpCookie_userInfoCookies=newHttpCookie("UserInfo");
  2. //AddingExpireTimeofcookiesbeforeexistingcookiestime
  3. _userInfoCookies.Expires=DateTime.Now.AddDays(-1);
  4. //Addingcookiestocurrentwebresponse
  5. Response.Cookies.Add(_userInfoCookies);

怎样控制Cookies域

我们可以以下面的方式来控制cookies的域:

(1)限制cookies的路径

(2)限制cookies的域

什么是Cookies Munging?

默认的,asp.net使用cookies来存储session id,但就像我之前提到的,有些浏览器不支持cookies。为了克服这个问题,asp.net使用“Cookies Munging”技术来管理session变量,而不使用cookies。

为什么我们在asp.net使用Cookies Munging

这里有一些特殊原因导致了我们在asp.net中使用Cookies Munging:

(1)一些浏览器不支持cookies

(2)有时用户让浏览器禁用cookies

Cookies Munging如何工作?

当用户向服务器请求一个页面,服务器编码“session id”然后将它们加入到页面的每一个HREF 的链接中。当用户点击一个链接,asp.net解码session id并传递它给用户请求的页面。现在,正在被请求的页面就可以检索到任何的session变量。这一切都将平滑地发生——当asp.net检测到用户浏览器不支持cookies时。


怎样实现Cookies Munging

为了实现它,我们不得不让session状态变成非cookies形式:

  1. <sessionStatecookieless="true/>

怎样在浏览器中配置cookies

我们现在来看看如何在浏览器中配置——启用或禁用cookies。我已经在之前讨论过IE浏览器的设置了。点击工具—>Internet Options—>转到隐私选项卡。在这里,你将能够看到一个像下面这样的滚动条:

第一个选项将允许所有的cookies,而最后一个选项将阻止所有的cookies。你可以在滚动的时候获得更多的信息。

分享到:
评论

相关推荐

    1235012013杨铭.zip

    1235012013杨铭.zip

    vue项目实战Vue实战项目篇源码.zip

    vue项目实战Vue实战项目篇源码.zip Vue实战项目篇源码.zipVue实战项目篇源码.zipVue实战项目篇源码.zipVue实战项目篇源码.zipVue实战项目篇源码.zipVue实战项目篇源码.zipVue实战项目篇源码.zipVue实战项目篇源码.zipVue实战项目篇源码.zipVue实战项目篇源码.zipVue实战项目篇源码.zipVue实战项目篇源码.zipVue实战项目篇源码.zipVue实战项目篇源码.zipVue实战项目篇源码.zipVue实战项目篇源码.zipVue实战项目篇源码.zipVue实战项目篇源码.zipVue实战项目篇源码.zipVue实战项目篇源码.zipVue实战项目篇源码.zipVue实战项目篇源码.zipVue实战项目篇源码.zipVue实战项目篇源码.zipVue实战项目篇源码.zipVue实战项目篇源码.zipVue实战项目篇源码.zipVue实战项目篇源码.zipVue实战项目篇源码.zipVue实战项目篇源码.zipVue实战项目篇源码.zipVue实战项目篇源码.zipVue实战项目篇源码.zipVue实战项目篇源码.zi

    NX二次开发uc4400 函数介绍

    NX二次开发uc4400 函数介绍,Ufun提供了一系列丰富的 API 函数,可以帮助用户实现自动化、定制化和扩展 NX 软件的功能。无论您是从事机械设计、制造、模具设计、逆向工程、CAE 分析等领域的专业人士,还是希望提高工作效率的普通用户,NX 二次开发 Ufun 都可以帮助您实现更高效的工作流程。函数覆盖了 NX 软件的各个方面,包括但不限于建模、装配、制图、编程、仿真等。这些 API 函数可以帮助用户轻松地实现自动化、定制化和扩展 NX 软件的功能。例如,用户可以通过 Ufun 编写脚本,自动化完成重复性的设计任务,提高设计效率;或者开发定制化的功能,满足特定的业务需求。语法简单易懂,易于学习和使用。用户可以快速上手并开发出符合自己需求的 NX 功能。本资源内容 提供了丰富的中英文帮助文档,可以帮助用户快速了解和使用 Ufun 的功能。用户可以通过资源中的提示,学习如何使用 Ufun 的 API 函数,以及如何实现特定的功能。

    基于Java的二手书交易微信小程序源码.zip

    提供的源码资源涵盖了安卓应用、小程序、Python应用和Java应用等多个领域,每个领域都包含了丰富的实例和项目。这些源码都是基于各自平台的最新技术和标准编写,确保了在对应环境下能够无缝运行。同时,源码中配备了详细的注释和文档,帮助用户快速理解代码结构和实现逻辑。 适用人群: 这些源码资源特别适合大学生群体。无论你是计算机相关专业的学生,还是对其他领域编程感兴趣的学生,这些资源都能为你提供宝贵的学习和实践机会。通过学习和运行这些源码,你可以掌握各平台开发的基础知识,提升编程能力和项目实战经验。 使用场景及目标: 在学习阶段,你可以利用这些源码资源进行课程实践、课外项目或毕业设计。通过分析和运行源码,你将深入了解各平台开发的技术细节和最佳实践,逐步培养起自己的项目开发和问题解决能力。此外,在求职或创业过程中,具备跨平台开发能力的大学生将更具竞争力。 其他说明: 为了确保源码资源的可运行性和易用性,特别注意了以下几点:首先,每份源码都提供了详细的运行环境和依赖说明,确保用户能够轻松搭建起开发环境;其次,源码中的注释和文档都非常完善,方便用户快速上手和理解代码;最后,我会定期更新这些源码资源,以适应各平台技术的最新发展和市场需求。

    Highlight Plus 2D 3.5.2

    Highlight Plus 2D为2D或3D场景中的任何精灵添加轮廓、发光、透明、叠加、阴影和缩放效果。 Highlight Plus 2D的设计考虑了平台兼容性和性能: 兼容Mac、Windows、安卓、iOS、WebGL。 兼容内置、URP(正向和2D渲染器)和HDRP管道。 兼容VR(多通道和单通道)。 移动设备上运行速度超快。 ** 视觉特征 ** - 发光颜色、宽度、alpha、动画速度、抖动、多色。 - 轮廓颜色、阿尔法通道和宽度。 - 叠加颜色、阿尔法通道和动画速度。 - 透明效果强度、色调和alpha。 - 击打/闪光效果,具有自定义颜色、强度和淡出持续时间。 - 悬停时缩放。 - 2D和3D阴影。 **其他功能** - 使用带有SpriteRenderer组件的单个和基于图集的精灵。 - 适用于四边形游戏对象(具有纹理的四边形)。 - 与基于Spine的动画网格渲染器一起使用。 - 支持动画(SpriteSkin),变换和自定义轴心。 - 预览效果在编辑器中(无需进入播放模式)。 - 将单个或一组子图形高亮显示为单个对象。

    基于Java的Mybatis二级缓存memcache设计源码

    Mybatis二级缓存memcache项目源码,共20个文件,全部采用Java语言编写,涉及多种文件类型如Java源代码、XML配置文件、PREFS文件、CLASSPATH文件、Git忽略文件、PROJECT文件、LICENSE文件、NOTICE文件、README文件和Markdown文档等。该项目是一个基于Java的Mybatis二级缓存memcache设计,旨在提供一个高效、稳定的二级缓存解决方案。

    安卓虚拟键盘蓝牙连接电脑操作

    安卓虚拟键盘蓝牙连接电脑操作

    基于MSP430单片机的多功能复费率电表及上位机系统设计

    针对目前国内现行电能表存在的局限性,本文研究开发了一种基于MSP430的多功能复费率电能表,该电能计量装置可以有效地监控用户消耗电能状况,实现了分时计费的功能,并且具备多种抄表方式,大大提高了电能计量装置的方便性和可靠性。帮助实现用电管理的科学化和自动化。本课题从以下几个方面进行了研究: 1.简要介绍了电能计量装置的发展和研究现况,在此基础上,论证了基于MSP430 的多功能复费率电能表研制的必要性和可行性。 2.根据系统的技术要求和条件,确定了系统的整体结构。 3.设计了以MSP430F449为核心处理器的电能表硬件结构。MSP430单片机作为数据处理核心部件和整个仪表的管理中心,整个硬件系统配置分为电能计量模块, MSP430微处理系统,通信接口,抄表模块等,完成了数据采集,电能计量,通信控制等功能。 4.介绍了上位机和下位机的系统软件设计。下位机部分的软件开发与调试作为重点,依据硬件电路的实现,以模块化的编程方法,实现数据处理和模块通信的任务。上位机主要完成用户界面,数据管理等功能。

    基于MySQL+MFC设计实现的小型点餐系统C++源码(含设计报告).zip

    【优质项目推荐】 1、项目代码均经过严格本地测试,运行OK,确保功能稳定后才上传平台。可放心下载并立即投入使用,若遇到任何使用问题,随时欢迎私信反馈与沟通,博主会第一时间回复。 2、项目适用于计算机相关专业(如计科、信息安全、数据科学、人工智能、通信、物联网、自动化、电子信息等)的在校学生、专业教师,或企业员工,小白入门等都适用。 3、该项目不仅具有很高的学习借鉴价值,对于初学者来说,也是入门进阶的绝佳选择;当然也可以直接用于 毕设、课设、期末大作业或项目初期立项演示等。 3、开放创新:如果您有一定基础,且热爱探索钻研,可以在此代码基础上二次开发,进行修改、扩展,创造出属于自己的独特应用。 欢迎下载使用优质资源!欢迎借鉴使用,并欢迎学习交流,共同探索编程的无穷魅力! 基于MySQL+MFC设计实现的小型点餐系统C++源码(含设计报告).zip基于MySQL+MFC设计实现的小型点餐系统C++源码(含设计报告).zip基于MySQL+MFC设计实现的小型点餐系统C++源码(含设计报告).zip基于MySQL+MFC设计实现的小型点餐系统C++源码(含设计报告).zip基于MySQL+MFC设计实现的小型点餐系统C++源码(含设计报告).zip基于MySQL+MFC设计实现的小型点餐系统C++源码(含设计报告).zip 基于MySQL+MFC设计实现的小型点餐系统C++源码(含设计报告).zip 基于MySQL+MFC设计实现的小型点餐系统C++源码(含设计报告).zip

    grpcio-1.42.0-cp38-cp38-macosx_10_10_x86_64.whl

    Python库是一组预先编写的代码模块,旨在帮助开发者实现特定的编程任务,无需从零开始编写代码。这些库可以包括各种功能,如数学运算、文件操作、数据分析和网络编程等。Python社区提供了大量的第三方库,如NumPy、Pandas和Requests,极大地丰富了Python的应用领域,从数据科学到Web开发。Python库的丰富性是Python成为最受欢迎的编程语言之一的关键原因之一。这些库不仅为初学者提供了快速入门的途径,而且为经验丰富的开发者提供了强大的工具,以高效率、高质量地完成复杂任务。例如,Matplotlib和Seaborn库在数据可视化领域内非常受欢迎,它们提供了广泛的工具和技术,可以创建高度定制化的图表和图形,帮助数据科学家和分析师在数据探索和结果展示中更有效地传达信息。

    基于卷积神经网络的甲状腺结节超声波图像自动分割与分类(源代码+说明文档)-机器学习精品课程设计(可以复现)

    这是2020年TN-SCUI挑战中分割任务(loU为82.54%)第一名解决方案的源代码。 这段代码可以很容易地在单目标分割任务上执行。这里,我们将整个过程分为五个步骤,以便您可以轻松复制我们的结果或在您个人自定义数据集上执行整个过程。 step0,准备环境 step1, 运行脚本[`step1_preprocessing.m 来执行预处理 step2, 运行脚[`step2_TrainAndValidate.py`] 训练和验证CNN模型 step3,运行脚本[`step3_TestOrInference.py`]在未经处理的原始图像上测试模型 step4 (可选择的), 运行脚本[`step4_Merge.py`]

    Java 插入排序代码示例

    插入排序是一种简单直观的排序算法,它的工作原理是通过构建有序序列,对于未排序数据,在已排序序列中从后向前扫描,找到相应位置并插入。插入排序在实现上,通常采用in-place排序(即只需用到O(1)的额外空间的排序),因而在从后向前扫描过程中,需要移动元素以腾出位置。 这段代码定义了一个名为InsertionSort的类,其中包含main方法和insertionSort方法。main方法初始化一个整数数组arr,调用insertionSort方法对其进行排序,并打印排序后的数组。insertionSort方法接受一个整数数组作为参数,并通过插入排序算法对其进行排序。

    anaconda安装知识领域: 数据可视化 技术关键词: Matplotlib、Seaborn、数据可视化、图表绘制

    anaconda安装知识领域: 数据可视化 技术关键词: Matplotlib、Seaborn、数据可视化、图表绘制 内容关键词: 折线图、柱状图、散点图 用途: 学习使用Python进行数据可视化和图表绘制 资源描述: Matplotlib官方文档提供了详细的Matplotlib库介绍、使用指南和示例代码,适合数据分析师和科学家使用Python进行数据可视化。

    Java开发案例-springboot-19-校验表单重复提交-源代码+文档.rar

    Java开发案例-springboot-19-校验表单重复提交-源代码+文档.rar Java开发案例-springboot-19-校验表单重复提交-源代码+文档.rar Java开发案例-springboot-19-校验表单重复提交-源代码+文档.rar Java开发案例-springboot-19-校验表单重复提交-源代码+文档.rar Java开发案例-springboot-19-校验表单重复提交-源代码+文档.rarJava开发案例-springboot-19-校验表单重复提交-源代码+文档.rar Java开发案例-springboot-19-校验表单重复提交-源代码+文档.rar

    一份不知道哪里来的第十五届国赛模拟题

    一份不知道哪里来的第十五届国赛模拟题(demo)

    srs5.0 r2版本,gb28181流媒体服务软件

    srs5.0 r2版本,gb28181流媒体服务软件

    基于python爬取新浪微博爬虫以及生成词云源码+源代码+文档说明(高分项目)

    基于python爬取新浪微博爬虫以及生成词云源码+源代码+文档说明(高分项目)本资源中的源码都是经过本地编译过可运行的,评审分达到95分以上。资源项目的难度比较适中,内容都是经过助教老师审定过的能够满足学习、使用需求,如果有需要的话可以放心下载使用。 该资源内项目源码是个人的毕设,代码都测试ok,都是运行成功后才上传资源,答辩评审平均分达到96分,放心下载使用! <项目介绍> 1、该资源内项目代码都经过测试运行成功,功能ok的情况下才上传的,请放心下载使用! 2、本项目适合计算机相关专业(如计科、人工智能、通信工程、自动化、电子信息等)的在校学生、老师或者企业员工下载学习,也适合小白学习进阶,当然也可作为毕设项目、课程设计、作业、项目初期立项演示等。 3、如果基础还行,也可在此代码基础上进行修改,以实现其他功能,也可用于毕设、课设、作业等。 本资源中的源码都是经过本地编译过可运行的,评审分达到95分以上。资源项目的难度比较适中,内容都是经过助教老师审定过的能够满足学习、使用需求,如果有需要的话可以放心下载使用。本资源中的源码都是经过本地编译过可运行的,评审分达到95分以上。资源项

    java调用科大讯飞l离线语音合成SDK

    语言合成资源描述是指对用于语音合成的数据集、模型和工具的描述。这些资源可以帮助研究人员和开发者创建更自然、更逼真的语音合成系统。以下是一些常见的语言合成资源: 数据集:包括用于训练和评估语音合成模型的音频文件、文本和标注。这些数据集通常包含不同性别、年龄和口音的说话者,以及各种语速、情感和场景的音频。 模型:包括用于生成语音的预训练模型和算法。这些模型可以是端到端的(如Tacotron、WaveNet等),也可以是基于传统的数字信号处理技术(如PSOLA、MBROLA等)。 工具和库:包括用于处理音频、文本和标注的工具,以及实现语音合成算法的库。这些工具和库可以帮助研究人员和开发者更快地开发和测试新的语音合成方法。 评估指标:包括用于衡量语音合成质量的客观和主观指标。客观指标(如MCD、WER等)可以自动计算,而主观指标(如MOS、CMOS等)。

    Java开发案例-springboot-38-集成MobileIMSDK实现即时通讯-源代码+文档.rar

    Java开发案例-springboot-38-集成MobileIMSDK实现即时通讯-源代码+文档.rar Java开发案例-springboot-38-集成MobileIMSDK实现即时通讯-源代码+文档.rar Java开发案例-springboot-38-集成MobileIMSDK实现即时通讯-源代码+文档.rar Java开发案例-springboot-38-集成MobileIMSDK实现即时通讯-源代码+文档.rar Java开发案例-springboot-38-集成MobileIMSDK实现即时通讯-源代码+文档.rar Java开发案例-springboot-38-集成MobileIMSDK实现即时通讯-源代码+文档.rar Java开发案例-springboot-38-集成MobileIMSDK实现即时通讯-源代码+文档.rar

    阿里云盘挂载到本地(让你的电脑容量瞬间变大!)

    CloudDrive是一款个人开发者开发的网盘挂载工具,可以将阿里云盘、115网盘、NebDAV、天翼云盘等国内网盘挂载映射到电脑本地,将网盘变成变成本地磁盘来使用。挂载成功后,网盘空间容量就会变成本地磁盘容量。网盘内容的资源也可以像本地磁盘一样复制、粘贴、删除、重命名等。 挂载教程:软件安装成功后桌面会出现一个CloudDrive的图标,点击即可打开一个类似于网站的操作页面,然后操作如右图所示即可成功挂载到本地(你会发现你C盘旁边会多出一个CloudDrive盘)

Global site tag (gtag.js) - Google Analytics