Cookie如何工作?

时间:2010-06-29 11:16:25

标签: web-applications

我想知道cookies的所有可能用途。他们好还是坏?他们是如何运作的?

到目前为止我收集的一些最佳实践 -

为组件使用无Cookie域

tag:cookie

当浏览器发出静态图像请求并将cookie与请求一起发送时,服务器对这些cookie没有任何用处。因此,他们只会毫无理由地创建网络流量。您应该确保使用无cookie请求请求静态组件。创建一个子域并在那里托管所有静态组件。

如果您的域名是www.example.org,则可以在static.example.org上托管您的静态组件。但是,如果您已经在顶级域example.org上设置了cookie而不是www.example.org,那么对static.example.org的所有请求都将包含这些cookie。在这种情况下,您可以购买一个全新的域,在那里托管您的静态组件,并保持此域无cookie。雅虎使用yimg.com,YouTube使用ytimg.com,亚马逊使用images-amazon.com等。

在无cookie域上托管静态组件的另一个好处是,某些代理可能会拒绝缓存使用cookie请求的组件。在相关说明中,如果您想知道是否应该使用example.org或www.example.org作为主页,请考虑cookie的影响。省略www会让您别无选择,只能将cookie写入* .example.org,因此出于性能原因,最好使用www子域并将cookie写入该子域。

实施限制

实际的用户代理实施限制了它们可以存储的cookie的数量和大小。通常,用户代理的cookie支持应该没有固定的限制。他们应该努力存储尽可能多的常用cookie。此外,通用用户代理应该分别提供以下每个最低功能,但不一定同时:

* at least 300 cookies
* at least 4096 bytes per cookie (as measured by the characters that comprise the cookie non-terminal in the syntax description of the Set-Cookie2 header, and as received in the Set-Cookie2 header)
* at least 20 cookies per unique host or domain name

为特定目的或有限容量设备创建的用户代理应该提供至少20个4096字节的cookie,以确保用户可以与基于会话的源服务器进行交互。

Set-Cookie2响应头中的信息必须完整保留。如果由于某种原因没有足够的空间来存储cookie,它必须被丢弃,而不是被截断。应用程序应尽可能少地使用cookie,并且应该优先处理cookie的丢失。

5 个答案:

答案 0 :(得分:8)

刀是好还是坏:) 简化说明:网络服务器向客户端发送一些文本。 这还有一个来源(谁发送了它)和一个“寿命”(它会持续多长时间在客户端)。

根据您的设置(浏览器安全性),您的浏览器会存储此“文本文件”。 当您再次联系服务器(站点)时,您的浏览器会将cookie发送到服务器。

简单示例:我让您选择我网站上的字体大小(小中等大小)。 当您选择尺寸时,我(服务器)会向您发送一个cookie。 下次你访问我问这个cookie是否存在 - 如果是这样的话我根据cookie内容设置字体大小。

Cookie背后还有安全措施 - 只会将cookie发送给发行人。

曼弗雷德

答案 1 :(得分:3)

有关规范,请参阅RFC2965 - HTTP State Management Mechanism

答案 2 :(得分:2)

  

什么是Cookies?

Cookie是一小部分无害的数据或信息,网站可以存储在访问它的计算机上。

  

他们好还是坏?

Cookie一点都不坏,而且无害。 Cookie只是一个数据。你有一个用文本文件写的朋友的号码,这有害吗?

  

Cookie如何运作?

其他网站无法访问由一个网站撰写的Cookie Cookie的最常见用途是识别同一网站上的返回用户。每当您登录网站时,您的会话详细信息都会在该网站的浏览器中的Cookie中进行跟踪。如果您已经告诉网站“下次记住您”,那么该网站可以通过在之前或之前的会话中写入您的浏览器的cookie来识别您。同样重要的是要注意,cookie是特定于浏览器的,并且在同一台机器上的多个浏览器中没有生命。

例如:如果您从Firefox登录到您的Yahoo帐户并选中“记住我”,然后如果您打开Internet Explorer或其他浏览器而不是firefox并转到Yahoo,它将无法识别你强迫你再次登录这本质上是因为cookie是根据您计算机上每个浏览器的网站存储的。

答案 3 :(得分:2)

可在以下网址获得一个很好的解释:http://en.wikipedia.org/wiki/HTTP_cookie

它基本上是HTTP协议的一部分,它在您的浏览器中存储一个小令牌,以便在您返回到首先存储令牌的网站时识别您。

它们用于各种各样的事情,例如登录网站以跟踪您的浏览习惯。

答案 4 :(得分:0)

Cookie用于在浏览器中存储小块信息。这些cookie可以由网络服务器读取/写入,但是用户也可以在浏览器中更改cookie,这可能是一个安全问题。