【问题标题】:Use cookies without sending them back to the server使用 cookie 而不将它们发送回服务器
【发布时间】:2010-09-25 18:16:21
【问题描述】:

我需要一种方法来存储一些对浏览器来说是全局的数据。如果我从我的应用程序中打开一个带有 URL 的新窗口,例如通过书签,我需要访问一些在另一个窗口中创建并且从未发送到服务器的数据。

据我所知,唯一对浏览器来说是全局的而不仅仅是一个窗口(如 window.name)是一个 cookie。我遇到的问题是,如果我设置了一个 cookie,那么 cookie 会随每个请求一起发送到服务器,但我不希望这些数据在线上。有没有什么办法可以设置一个 cookie,只用它作为一个桶来存储一些数据,而不是把这些数据发送到服务器?

【问题讨论】:

    标签: cookies browser


    【解决方案1】:

    HTML 5 存储 API 看起来正是您想要的,但不幸的是,目前只有少数浏览器支持它。

    【讨论】:

    • 是的,我认为你是对的。这就是我试图用 cookie 伪造的内容。
    【解决方案2】:

    有没有什么办法可以设置一个 cookie,只用它作为一个桶来存储一些数据,而不是把这些数据发送到服务器?

    没有。

    您需要研究一个提供专用离线存储设施的插件,或者使用 HTML5 存储 API 并告诉每个人升级他们的浏览器

    如果您决定采用插件路线,据我所知,您有 3 个选择:

    1. 谷歌齿轮
    2. Flash - 它具有离线存储功能 - 您可以编写一个小型 Flash 应用程序来使用此功能存储内容,然后通过 javascript 与它进行互操作。
    3. Silverlight 还具有离线存储功能 - 与使用闪存一样,您可以编写一个小应用程序来进行存储,然后通过 javascript 与它进行互操作。

    我可能会先考虑使用闪存,因为每个人都已经拥有它。

    如果您使用 silverlight,开发可能会容易得多。它没有被广泛安装,但它正在迅速传播。上次我听说* 30% 的浏览器都安装了它,这令人印象深刻。

    不幸的是,Google 齿轮排在第三位。人们将出于其他原因安装闪光灯和银光,但没有人有装备。

    *这是一个完全未经证实的引述,但似乎与我在不同人的计算机等上看到的相符。

    【讨论】:

    • 感谢您的回答。 Cookie 不是全局存储解决方案。哈哈。 :-)
    【解决方案3】:

    您能否要求您的用户安装 Google Gears? 这是一个 javascript API,可让您存储本地信息 - 还允许您在会话之间保持持久性,这可能对您的应用有用。

    【讨论】:

    • 这很有用,我肯定想将 Google Gears 集成到我的应用程序中,这样它也可以离线工作。但我永远不会要求这个。听起来我可能不得不在这个问题上妥协。 :-(
    【解决方案4】:

    为什么不直接使用 window.opener 读取父窗口中的字段?或者,如果您正在运行三个窗口 - 父级和两个子级,我认为您可能在暗示,然后从子级读取/写入父级中的隐藏字段。

    【讨论】:

    • 大概没有父母。我的假设是,如果有人从书签打开链接,则该窗口没有父窗口。对吗?
    • 然后在屏幕外打开一个看不到的子窗口,并用它来保存您的数据。
    【解决方案5】:

    听起来您的应用程序是 100% 在本地运行的,如果是这种情况,浏览器无论如何都不适合。 Cookie 可以轻松删除。如果您的应用程序不是本地的,则网络服务器应该是提供信息的一个。 Cookie 从来都不是存储敏感信息或应该持续较长时间的信息的正确方式。

    【讨论】:

    • 它不是 100% 本地的,但它与 REST API 通信,这意味着客户端需要不时地存储一些状态。如果我想允许用户在我的应用程序之外打开页面,那么我需要某种全局状态。
    • 将 cookie 发送到服务器有什么问题? cookie 仅通过创建它们的 url 发送到服务器。
    猜你喜欢
    • 2015-06-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-07-31
    • 2016-10-15
    • 1970-01-01
    • 2016-12-05
    • 2018-06-11
    相关资源
    最近更新 更多