Cookie在网络应用中的用途是什么?

时间:2010-11-17 11:17:07

标签: javascript cookies

我正在构建一个网络应用程序,并注意到其他网络应用程序(特别是Gmail)使用cookie,如果您没有启用cookie,它会将您注销。知道这些cookie用于什么,它们是如此重要吗?网络应用中的Cookie是否有任何常见用途?

6 个答案:

答案 0 :(得分:5)

它使服务器能够跨服务器端的请求(会话)维护特定于客户端的状态。它还使JavaScript能够在客户端的请求之间维护特定于客户端的状态,而无需服务器交互。

答案 1 :(得分:2)

Cookie维护与用户相关的数据,并且它驻留在用户的计算机上(即浏览器cookie),以便在它们返回到站点时加载,即使在几天之后,甚至比天数长得多

以下是一些在cookie中最有意义的信息示例:

  • 用户选择列中的排序
  • 用户网页的颜色主题
  • 用户对文章类别(例如Google新闻栏目)的偏好

您可能会说“为什么不将它保存在数据库中并让服务器处理它?” 好吧,Cookie还允许您维护用户的偏好,而无需他们创建一个跟踪其设置的帐户 您可能还会说“为什么不将它保留在Web应用程序的会话中(例如在ASP.NET中)?” 当用户离开网站时,会话被擦除,因此设置将不会持续,直到他们再次返回。

答案 2 :(得分:2)

Cookie 是从网站(服务器端)发送的一小段数据(名称 - 值对),并在用户浏览该网站时存储在用户的网络浏览器中。 Cookie旨在提供有关用户交互的有状态信息,尽管HTTP协议具有无状态特性。 Cookie可以根据其性质进行分类。 可以根据您希望cookie具有的功能来选择cookie的类型。

会话Cookie

会话cookie(也称为内存中cookie或临时cookie)仅存在于临时内存中,而用户则导航网站。 (在java中,可以通过在请求对象上调用getSession()来创建会话cookie)。 Web浏览器通常在用户关闭浏览器时删除会话cookie。这种类型的cookie可用于在导航期间但在同一会话期间维护与用户相关的数据。用户可以在不影响首选项的情况下在网站上来回浏览,但是当浏览器关闭或会话超时时,所有首选项都将丢失。

持久性Cookie

如果您未设置max-age,则持久性cookie会延长用户会话。要将cookie保留在用户会话之外,您必须为该cookie设置Max-Age。 Cookie必须具有数据(名称 - 值对),每次用户访问网站时都会将数据发送回服务器。这可以用于记录重要的信息,例如用户最初访问该网站的方式或所做的偏好等。持久性cookie可用于在导航期间维护与用户相关的数据,可能在不同时间的多次访问中。持久性cookie存储用户相关数据,这些数据将用于将来访问网站。持久性cookie可以用作购物车,用户可以在整个网站或将来导航时存储他们想要购买的商品。

安全Cookie

安全cookie启用了安全属性,仅通过HTTPS使用,确保在从客户端传输到服务器时始终对cookie进行加密。这使得cookie不太可能通过窃听暴露于cookie盗窃。除此之外,所有cookie都受浏览器的同源策略的约束。 当您询问Gmail Cookie机制时,是的Gmail正在使用此安全Cookie机制存储用户名和随机令牌作为您登录的凭据。是的,它没有将您的原始密码存储在安全cookie中,而是当您成功输入正确的用户名和密码并说“是”以记住我的密码时,它会为您的用户名生成一个随机数(令牌),作为除了标准会话管理cookie和存储用户名和随机数作为其数据库中的密码。其他设备无法使用该cookie,因为它使用的是同源策略。用户名和令牌作为一对存储在数据库表中。当用户再次访问该站点时,登录cookie将自动从浏览器发送到请求对象中的服务器,然后服务器在数据库中验证用户名和令牌。如果该对存在,则认为用户已通过身份验证。使用的令牌将从数据库中删除。生成新令牌并使用用户名存储在数据库中,并通过响应对象中的新登录cookie发布给用户。如果该对不存在,则忽略登录cookie。通过此机制输入的用户不得访问某些受保护的信息或功能,如更改密码,查看个人身份信息(PII)。要执行这些操作,用户必须首先成功提交正常的用户名/密码登录表单,当您尝试执行这些禁止的操作时,该表单将自动弹出。由于此方法允许用户具有来自不同浏览器或计算机的多个记住登录。

HttpOnly cookie

大多数现代浏览器都支持HttpOnly属性。在支持的浏览器上,仅在传输HTTP(或HTTPS)请求时才使用HttpOnly会话cookie,从而限制从其他非HTTP API(如JavaScript)的访问。此限制可以缓解但不能通过跨站点脚本(XSS)消除会话cookie被盗的威胁。此功能仅适用于会话管理cookie,而不适用于其他浏览器cookie。

第三方Cookie

第三方Cookie是属于与地址栏中显示的域不同的域的Cookie。它主要用于广告,通过跟踪用户偏好和浏览器历史来判断其倾向并相应地向他出售。

答案 3 :(得分:1)

正如其他人所说,Cookie用于维护状态。使用它们的元原因是因为HTTP是无状态协议,但商业现实要求状态持久性以某种方式

答案 4 :(得分:1)

到目前为止还没有提到的一件事是cookie也用于存储身份验证信息(以及应用程序状态)。这可以解释为什么当你关闭cookie时你会自动注销gmail。如果谷歌无法再确定您是哪个用户,那么他们就无法访问您的电子邮件。

答案 5 :(得分:0)

Cookie是服务器设置的数据,在每次请求时由UA提供给服务器。目的是在请求之间保留状态(记住,HTTP是无状态协议)。这提供了广泛的用途,从保持简单的偏好到识别特定的UA(在您登录时GMail如何识别您和您的帐户)