【问题标题】:HTTP cookie between two HTML pages两个 HTML 页面之间的 HTTP cookie
【发布时间】:2011-03-22 22:19:52
【问题描述】:

我有两个 HTML 页面。输入少量输入后,用户将从第一页重定向到第二页。在将用户重定向到第二个 HTML 页面(使用 window.location="new HTML URL")之前,我使用 document.cookie DOM API 在 cookie 中保留了一些用户输入。

当我在第二个 HTML 页面中时,我无法从该 cookie 中检索值。我认为由于新 HTML 页面中的文档对象会发生变化,因此我的 cookie 值变得无法访问。

有人可以告诉我:如何从一个 javascript 在另一个 HTML 页面中的一个 HTML 页面中保存的 cookie 中检索值,即 HTML A 的 javascript 在 HTML B 的 javascript 中编写的 cookie?

我没有任何服务器端代码,所以我无法利用服务器端逻辑。此外,我不应该在 URL 中传递值。所以我需要一个关于纯 javascript 和 HTML 的解决方案。

如果有人有更好的解决方案,请告诉我。谢谢

【问题讨论】:

  • 你不能使用 ASP、PHP 或 JSP 之类的东西吗?那些将解决这个问题。期间。
  • 只要域和路径没有改变,并且您没有设置太短(或负数)的到期日期,在一个页面上设置并通过另一个页面阅读应该没有问题。请向我们提供有关这两个页面的一些信息,例如域和路径,以及您用于读取/写入 cookie 的一些代码。自 2005 年以来,我一直在维护一个开源 JavaScript cookie 库,因此我应该能够为您提供体面的信息。
  • @Tanner Ottinger - “那些将解决问题。期间”没有多大意义。无论代码来源/来源如何,相同的限制都适用于 cookie。此外,您没有解释其中一个服务器平台将如何解决问题。
  • 我的意思是,使用这些语言会有很大的帮助很多,当涉及到 cookie 时,Javascript 无法与那些语言进行比较。他们有更多的内置支持来处理多页数据。在 PHP 中,设置 cookie 是一个单独的函数,而获取 cookie 只是将其从全局数组 _COOKIE 中取出。在 Javascript 中,您必须从 cookie 字符串中提取它。
  • 网址是什么?如果它们没有相同的域,那么您将无法在页面之间共享 cookie 值。 @Tanner Ottinger 你的 cmets 真的没有意义; 如果他的页面来自同一个域,那么 OP 想要做的事情是完全合理的。

标签: javascript cookies


【解决方案1】:

尝试使用 localStorage 代替 cookie,

// set your values in the first page
localStorage.setItem('itemKey', 'values');

// on the second page, retrieve them
var values = localStorage.getItem('itemKey');

您可以使用jStorage 插件进行跨浏览器行为。

也可以参考question 来存储对象而不是字符串

【讨论】:

  • 我假设 localStorage 是一个 HTML5 解决方案。我对么?我们的标准浏览器不支持 HTML5。这种解决方案在这种情况下也有效吗?
  • 这个概念在非 HTML5 浏览器(例如 IE)中存在,但在不同的实现中,您仍然可以使用 jStorage 插件作为接口,它会为您处理存储,如果您参考他们的网站,他们提到 IE7 和 IE6 可以存储高达 128kb 的值,如果有帮助的话
  • 我试过 jstorage。我使用此链接jstorage.info/test?type=prototype 向 jstorage 添加了一个键值对。我创建了另一个带有按钮的 HTML 页面,并附加了一个 javascript 函数,该函数将根据键返回值。这是我的javascript函数的内容。 var value = $.jStorage.get("test");alert(value);但警告框显示为空。难道我做错了什么?我在我的 HTML 页面中使用 jstorage.js 和 prototype.js。
  • @user131476 您使用的链接仅用于演示问题,您必须在第一页使用 $.jStorage.set('test', 'your value') ,而不是使用该链接提到,在另一个页面中使用你已经做过的 $.jStorage.get("test"),你的值应该被检索到。
【解决方案2】:

JAAulde 的回答恰到好处。

对于 OP 正在尝试做的事情,比如 PHP 会很棒,在这种情况下,我不会为了在两个页面之间传递数据而使用 cookie,这很愚蠢。但是,如果需要真正的持久性并且数据要求是简单的 cookie,那么即使使用 PHP 等语言也是可行的。

那些是相当严格的限制,这是一个班级项目吗?也就是说,除了对 DOM 进行丑陋且高度不安全的 hack 之外,没有任何其他方法可以做您正在尝试的事情。

【讨论】:

    猜你喜欢
    • 2013-05-21
    • 2019-08-10
    • 1970-01-01
    • 2021-06-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-09-04
    • 1970-01-01
    相关资源
    最近更新 更多