【问题标题】:Meaning of cookie in browser浏览器中cookie的含义
【发布时间】:2014-04-29 01:02:13
【问题描述】:

我发现浏览器中的cookie是一个随机字符串,Web服务器发送给每个客户端用于记住用户的信息目的。但我不明白程序员的观点,cookie 有什么用? 例如,我在 Chrome 浏览器中使用 EditThisCookie 扩展程序来读取 wikipedia.org 站点的 cookie,如下图所示。这个 cookie (sessionId) 的值对程序员来说是没有用的(编辑:我的意思是我不会从这个 cookie 中提取任何信息,我知道 cookie 对 web 开发人员非常重要,所以很抱歉我的表达不佳)。如果我得到这个 cookie,我可以了解哪些关于用户的信息? 寻求帮助!非常感谢!

关于cookie的例子

http://i102.photobucket.com/albums/m86/dienkun1/cookie_example_zps455f0dad.png

编辑:对不起,我刚刚以错误的方式表达了我的问题。 实际上,我打算编写一个通过用户cookie收集用户偏好的扩展程序,但是我无法理解可以从cookie中提取哪些信息。我在许多文档中阅读过关于 cookie 的信息,比如维基百科,所有这些都只是展示了如何获取 cookie、cookie 的定义、分类……而没有关于我们可以从 cookie 中获取哪些信息。 非常感谢!

【问题讨论】:

    标签: cookies


    【解决方案1】:

    为什么说sessionId对程序员没用呢?它实际上非常有用。在 Wikipedia 的服务器上的某个地方,它们可能存储了大量有关您的会话的信息。这可能包括您是否已经隐藏了他们的筹款横幅之一(这样它就不会一次又一次地向您显示),基本功能所需的东西,例如您当前登录的用户作为。

    但是,维基百科正在为数百万个会话存储相同的信息。它需要一种方法将信息与每个单独的浏览器联系起来。 sessionId 就是这样做的。当您第一次访问该页面时,它将 sessionId 设置在 cookie 中,并且该 cookie 会随着您现在对其发出的每个请求被发送回服务器。然后他们在后端有代码从 cookie 中读取 sessionId 并使用它来查找特定于会话的所有信息,并使用它做任何需要做的事情。

    当然,您可以将会话信息本身存储在 cookie 中,但这样做存在一些问题。首先,每个 cookie 的大小以及单个域的所有 cookie 的总大小都有限制。您要存储的某些数据可能甚至不适合。但更大的问题是 cookie 很容易被最终用户操纵。如果您将用户登录信息存储在 cookie 中,用户可以将该值更改为其他值,然后突然以其他人身份登录!当然,用户也有可能将他们的 sessionId 更改为其他用户的会话并突然以他们的身份登录。这就是为什么会话 ID 需要尽可能随机,并且应该足够长,以至于基本上不可能猜到别人的。

    【讨论】:

    • 感谢您的帮助,Elezar!我还有一个问题要问你,如果我无法从会话 cookie 值(随机字符串)中提取信息,是否有另一种方法可以通过 cookie 了解用户的偏好,例如用户最喜欢哪个足球队(我认为我们可以计算用户阅读新闻的次数 - 例如:切尔西,但正如我所见,我只能获得 cookie 的域)。非常感谢您的帮助!
    • 嗯,通过 cookie 可用的所有内容都必须首先由您(或至少由您控制的 Web 服务器)放入该 cookie。因此,您不能仅仅根据 cookie 推断出他们最喜欢的球队,而是可以询问用户他们最喜欢的球队是什么,然后将他们的答案存储在 cookie 中。然后,只要该 cookie 存在于他们的机器上,您就会知道他们选择了什么。在会话 cookie 之外,这实际上是 cookie 最常见的用途。
    【解决方案2】:

    好吧,如果 sessionId 没用,为什么还要费心将 sessionId 写入 cookie?

    当涉及到(例如)识别您网站上的用户时,Cookie 非常有用,因此您可以让他们立即登录、统计他们的访问次数、在您的网站上跟踪他们,甚至更远......仅举几个用例.

    引用一个比较流行的网站(wikipedia.org):

    Cookie 旨在成为网站记住状态信息(例如购物车中的商品)或记录用户浏览活动(包括单击特定按钮、登录或记录用户访问了哪些页面)的可靠机制。用户早在几个月或几年前)。

    这里最重要的词是“有状态的”。

    【讨论】:

    • 首先,我感谢您的帮助,约翰。实际上,我知道 cookie 的这个目的。但是,我的意思是如果我有一个 cookie,我可以从中提取哪些信息?我看到cookie的值(例如,在我在问题中包含的图片中)是一个随机字符串,因此我无法从中提取任何内容。
    • 这取决于 cookie。在这种情况下,您无法从中获得太多信息,因为它背后的逻辑(如何生成以及如何使用数据)不可用。如果您的意思是如何从 cookie 中的随机字符串中受益:我相信他们也将它存储在某个地方,一旦您再次访问他们的网站,他们就会知道是您..
    • 非常感谢!我认为就我而言,我必须从另一种 cookie 中获取信息。在我的情况下不使用会话 cookie。
    • 我能再问你一个问题吗?有没有办法通过cookie知道用户的偏好?例如,我可以知道用户最喜欢哪个足球队,只使用 cookie 吗?非常感谢!
    • 正如 Elezar 所写,将 cookie 视为某种小型数据库,其中有键(例如 sessionId)和值(例如随机字符串)。现在,网络服务器可以通过计算您访问有关特定团队的文章的频率来确定您最喜欢的团队是什么。大多数情况下,这些信息不会存储在 cookie 本身中,而是存储在数据库或其他东西中可用于定向广告(参见en.wikipedia.org/wiki/Google_Analytics#Technology),例如.. Google 可能知道您最喜欢的团队是什么;)
    猜你喜欢
    • 2012-02-02
    • 2021-01-26
    • 2012-07-15
    • 2014-04-05
    • 2021-10-13
    • 2011-08-14
    • 2014-05-07
    • 1970-01-01
    相关资源
    最近更新 更多