`
lizhe_0428
  • 浏览: 9562 次
  • 来自: ...
社区版块
存档分类
最新评论

Cookie---自动提交给服务器信息,response时把现有信息存在某个文件中

阅读更多

Cookie 是一小段文本信息,伴随着用户请求和页面在 Web 服务器和浏览器之间传递。

例如,如果在用户请求 站点中的页面 时 应用程序发送给该用户的不仅仅是一个页面,还有一个包含日期和时间的 Cookie,用户的浏览器在获得页面的同时还获得了该 Cookie,并将它存储在用户硬盘上的某个文件夹中。

Cookie 帮助网站存储有关访问者的信息。一般来说,Cookie 是一种保持 Web 应用程序连续性(即执行状态管理)的方法。除短暂的实际交换信息的时间外,浏览器和 Web 服务器间都是断开连接的。对于用户向 Web 服务器发出的每个请求,Web 服务器都会单独处理。但是在很多情况下,Web 服务器在用户请求页时识别出用户会十分有用。例如,购物站点上的 Web 服务器跟踪每位购物者,这样站点就可以管理购物车和其他的用户特定信息。因此,Cookie 可以作为一种名片,提供相关的标识信息帮助应用程序确定如何继续执行。

使用 Cookie 能够达到多种目的,所有这些目的都是为了帮助网站记住用户。例如,一个实施民意测验的站点可以简单地将 Cookie 作为一个 Boolean 值,用它来指示用户的浏览器是否已参与了投票,这样用户便无法进行第二次投票。要求用户登录的站点则可以通过 Cookie 来记录用户已经登录,这样用户就不必每次都输入凭据。

Cookie 与网站关联,而不是与特定的页面关联。因此,无论用户请求站点中的哪一个页面,浏览器和服务器都将交换 Cookie 信息。用户访问不同站点时,各个站点都可能会向用户的浏览器发送一个 Cookie;浏览器会分别存储所有 Cookie。

大多数浏览器支持最大为 4096 字节的 Cookie。

大多数浏览器只允许每个站点存储 20 个 Cookie如果试图存储更多 Cookie,则最旧的 Cookie 便会被丢弃。

Cookie 通过 HttpResponse 对象发送到浏览器,该对象公开称为 Cookies 的集合。

建 Cookie 时,需要指定 Name 和 Value。每个 Cookie 必须有一个唯一的名称,以便以后从浏览器读取 Cookie 时可以识别它。由于 Cookie 按名称存储,因此用相同的名称命名两个 Cookie 会导致其中一个 Cookie 被覆盖。

下面的示例演示两种编写 Cookie 的方法:

Response.Cookies["userName"].Value = "patrick";

Response.Cookies["userName"].Expires = DateTime.Now.AddDays(1);

HttpCookie aCookie = new HttpCookie("lastVisit");

aCookie.Value = DateTime.Now.ToString();

aCookie.Expires = DateTime.Now.AddDays(1);

Response.Cookies.Add(aCookie);

此示例向 Cookies 集合添加两个 Cookie,一个名为 userName,另一个名为 lastVisit。

对于第一个 Cookie,Cookies 集合的值是直接设置的。可以通过这种方式向集合添加值,因为 Cookies 是从 NameObjectCollectionBase 类型的专用集合派生的。

对于第二个 Cookie,代码创建了一个 HttpCookie 类型的对象实例,设置其属性,然后通过 Add 方法将其添加到 Cookies 集合。在实例化 HttpCookie 对象时,必须将该 Cookie 的名称作为构造函数的一部分进行传递。

这两个示例都完成了同一任务,即向浏览器写入一个 Cookie。在这两种方法中,有效期值必须为 DateTime 类型。但是,lastVisited 值也是日期时间值。因为所有 Cookie 值都存储为字符串,因此,必须将日期时间值转换为 String。

如果该用户再次请求您站点中的页面,当该用户输入 URL 时,浏览器便会在本地硬盘上查找与该 URL 关联的 Cookie。如果该 Cookie 存在,浏览器便将该 Cookie 与页请求一起发送到您的站点。然后,应用程序便可以确定该用户上次访问站点的日期和时间。您可以使用这些信息向用户显示一条消息,也可以检查到期日期。

Cookie 是另一种形式的用户输入,因此很容易被他们非法获取和利用。

ASP.NET 提供了无 Cookie 会话作为替代。可以将应用程序配置为不将会话 ID 存储在 Cookie 中,而存储在站点中页面的 URL 中。如果应用程序依赖于会话状态,可以考虑将其配置为使用无 Cookie 会话。但是在较少的情况下,如果用户与他人共享 URL(可能是用户将 URL 发送给同事,而该用户的会话仍然处于活动状态),则最终这两个用户可能共享同一个会话,结果将难以预料。

使用 Cookie 的优点

1.可配置到期规则: 

Cookie 可以在浏览器会话结束时到期,或者可以在客户端计算机上无限期存在,这取决于客户端的到期规则。

2.不需要任何服务器资源 

Cookie 存储在客户端并在发送后由服务器读取。

3.简单性 

Cookie 是一种基于文本的轻量结构,包含简单的键值对。

4.数据持久性 

虽然客户端计算机上 Cookie 的持续时间取决于客户端上的 Cookie 过期处理和用户干预,Cookie 通常是客户端上持续时间最长的数据保留形式。

使用 Cookie 的缺点

1.大小受到限制  

大多数浏览器对 Cookie 的大小有 4096 字节的限制,尽管在当今新的浏览器和客户端设备版本中,支持 8192 字节的 Cookie 大小已愈发常见。

2.用户配置为禁用 

有些用户禁用了浏览器或客户端设备接收 Cookie 的能力,因此限制了这一功能。

3.潜在的安全风险 

Cookie 可能会被篡改。用户可能会操纵其计算机上的 Cookie,这意味着会对安全性造成潜在风险或者导致依赖于 Cookie 的应用程序失败。另外,虽然 Cookie 只能被将它们发送到客户端的域访问,历史上黑客已经发现从用户计算机上的其他域访问 Cookie 的方法。您可以手动加密和解密 Cookie,但这需要额外的编码,并且因为加密和解密需要耗费一定的时间而影响应用程序的性能。

注意

Cookie 通常用于为已知用户自定义内容的个性化情况。在大多数此类情况中,Cookie 是作为“标识”而不是“身份验证”。因此,通常保护用于标识的 Cookie 的方法是在 Cookie 中存储用户名、帐户名或唯一用户 ID(例如 GUID),然后用以访问站点的用户个性化结构中的信息。
分享到:
评论

相关推荐

    flask-session-cookie-manager

    综合以上信息,`flask-session-cookie-manager`是一个针对Flask的Python库,它提供了方便的API或命令来处理session cookie,可以帮助开发者轻松地在他们的应用中管理用户会话。使用这个工具,开发者可以更专注于业务...

    flask-session-cookie-manager-master.zip

    综上所述,“flask-session-cookie-manager-master”是一个针对Flask的session管理工具,重点关注session的安全加密和解密,旨在提高Web应用在CTF竞赛或实际开发中的安全性。通过研究和使用这个工具,我们可以深入...

    jquery-cookie-master.jar

    在Java环境中,由于"jquery-cookie-master.jar"的存在,开发者可以方便地在服务器端处理与Cookie相关的逻辑,例如验证Cookie的有效性,或者在服务器端根据Cookie信息来个性化用户的服务。 需要注意的是,虽然Cookie...

    PyPI 官网下载 | flask-session-cookie-manager-1.2.1.tar.gz

    标题中的“PyPI 官网下载 | flask-session-cookie-manager-1.2.1.tar.gz”表明这是一个在Python Package Index(PyPI)上发布的开源软件包,名为“flask-session-cookie-manager”,版本为1.2.1,其源代码以tar.gz...

    前端开源库-universal-cookie-koa

    当与`universal-cookie`结合时,可以在服务器端的`Koa`应用中实现cookie的获取和设置,这对于SSR尤其有用,因为它允许服务器端访问和修改客户端的cookie,从而实现数据共享和会话管理。 在`cookies-master`这个...

    Laravel开发-cookie-guard

    **Laravel 开发中的 "Cookie-Guard"** 在 Laravel 框架中,"Cookie-Guard" 是一种安全措施,用于处理用户身份验证和授权。它利用了 cookies 作为存储用户认证状态的一种方式,增强了应用的安全性和用户体验。下面将...

    前端开源库-cookie-client

    4. **请求时的Cookie处理**:在发出HTTP请求时,`cookie-client`可以自动将相关Cookie添加到请求头中,确保服务器端能够接收到这些信息,这对于保持会话状态跨请求连续性至关重要。 5. **安全性和隐私**:库可能...

    Get Cookie-crx 插件 2.0版本

    Get Cookie-crx插件是专为浏览器设计的一款实用工具,主要功能是帮助用户方便快捷地获取网页中的Cookie信息。在2.0版本中,这款插件进行了升级优化,旨在提供更稳定、更高效的Cookie管理体验。 Cookie是网络服务器...

    Laravel开发-cookie-csrf

    在`cookie-csrf-master`这个压缩包中,可能包含了一个示例项目,演示了如何自定义过滤器来实现这些功能。通常,项目的结构可能包括以下部分: 1. `app/Filters.php`:定义自定义过滤器的地方,可能有一个名为`csrf`...

    jsp之Cookie自动登录

    Cookie是服务器在用户浏览器上存储的小型文本文件,用于记录用户信息,如登录状态、用户喜好等。当用户再次访问同一网站时,浏览器会自动将这些Cookie发送回服务器,从而实现状态保持。 ### 2. 自动登录原理 自动...

    js-cookie-jar

    Cookie是由服务器端发送到客户端(浏览器)的一小段文本信息,浏览器在后续的请求中会自动将Cookie回传给服务器,从而实现数据交换。每个Cookie都有一个名字、值、过期时间、路径、域和安全属性等组成部分。原生的...

    WEB16-session&cookie-源代码.rar

    WEB16_session&cookie。 案例一、记录用户的上次访问时间---cookie 案例二、实现验证码的校验----session。 1.服务器端向客户端...设置cookie信息在浏览器的磁盘文件中存储的时间是10分钟,过期浏览器 自动删除该co

    cookie-editor 管理您的 cookie

    这个打包文件可能包含了安装指南、许可协议、版本信息等,确保用户能够正确地安装和使用cookie-editor。 **知识点详细说明:** 1. **Cookie机制**:Cookie是由服务器发送到用户的浏览器并存储在本地的一小段文本...

    Cookie-Session机制详解.docx

    当浏览器再请求该网站时,浏览器把请求的网址连同该 Cookie 一同提交给服务器。服务器检查该 Cookie,以此来辨认用户状态。 Cookie 的优点是可以弥补 HTTP 协议无状态的不足,可以在客户端记录信息确定用户身份。...

    jquery-cookie-master-v1.4.1官方版(2015.09.13--源代码+示例) cookie设置,验证通过

    这个方法会将指定的Cookie设置为过期,从而在浏览器的下一次清理时自动删除。 5. **选项详解**: - `expires`:过期时间,可以是日期对象或数字表示天数。默认情况下,Cookie会在浏览器关闭后立即删除。 - `path`...

    java操作cookie-实现两周内自动登录.doc

    Cookie是一种在客户端和服务器之间传递信息的小型文本文件,常用于用户身份的识别。本文将详细解释如何利用Java来实现这一功能。 首先,我们要理解用户自动登录的基本概念。在用户首次登录网站并提供有效的用户名和...

    Cookie-Session机制详解.txt

    在Web开发中,为了实现服务器与客户端之间的会话管理,常用的技术之一就是Cookie-Session机制。本文将深入剖析Cookie-Session的工作原理及其在实际应用中的作用。 #### 二、基础知识 ##### 2.1 Cookie概述 Cookie...

    Edit-This-Cookie-1.5.0.zip

    标题 "Edit-This-Cookie-1.5.0.zip" 提供了我们即将讨论的核心信息,即一个名为 "Edit-This-Cookie" 的浏览器插件的版本号为1.5.0的压缩文件。这个插件是专为谷歌Chrome浏览器设计的,用于管理、编辑和分析网页中的...

    jquery-cookie-master

    总结,"jquery-cookie-master"项目为jQuery的Cookie管理提供了便利,无论是开发新功能还是维护现有应用,都能从中受益。掌握jQuery Cookie的使用,无疑将提升你在Web开发中的技能水平,使你能更灵活地应对各种存储...

Global site tag (gtag.js) - Google Analytics