【问题标题】:Setting cookie in Internet Explorer 3.0?在 Internet Explorer 3.0 中设置 cookie?
【发布时间】:2020-05-17 06:54:46
【问题描述】:

我在 Internet Explorer 3.0 中设置会话 cookie 时遇到问题。有谁知道有什么特别需要做的吗?

我正在使用 PHP,如下所示:setcookie('test', '1');

我没有使用路径或过期时间,有必要吗?

也许有人有一些旧的经验,或者是 1997-1998 年的 Web 开发书籍?

如果有人想知道我为什么要为此烦恼,因为没有人再使用 IE3,而且很难,yadda yadda,这是一个艺术项目。

编辑:澄清一下,我还没有尝试通过 JS 设置 cookie,这是通过 HTTP 完成的。

【问题讨论】:

  • IE 3?什么? document.all FTW!老实说,我从 1998 年开始在带有记事本的旧 IBM 上获得的所有知识都不再存在于我的脑海中。大声笑
  • caniuse.com 上的状态未知,see here。也许您可以使用 cookie 以外的其他东西,或者,您知道,不是 IE3。
  • 可能有助于提供有关您遇到的问题的更多详细信息,如MDN says IE supports set cookie headers.

标签: html http cookies internet-explorer-3


【解决方案1】:

我不确定此时 setCookie 是否存在。但是,您可以使用旧的设置 cookie 的方法,即

document.cookie = "someCookie=someCookievalue"

document.cookie += "someCookie=someCookievalue"

如果您不想覆盖 cookie。

然后您可以使用document.cookie 属性检索它。这将返回所有 cookie 的字符串。你可以使用这个函数来解析它们。

function parseCookie(cookiesString) {
  var cookiesOutput = {};
  var cookieKeysAndValue = cookiesString.split(';');
  for(var i = 0; i < cookieKeysAndValue.length; i++){
   var keyAndValue = cookieKeysAndValue[i].split('=');
   cookiesOutput[keyAndValue[0]] = keyAndValue[1];
  }
  return cookiesOutput
}

document.cookie = 'someCookie=SomeCookieValue';
console.log(parseCookie(document.cookie));

我不能 100% 确定这会起作用,因为您知道,您使用的是 Internet Explorer 3。但值得一试。

如果您需要这方面的更多信息,您可以consult the MDN doc

P.S.我尽可能多地写一些旧的javascript类型,但仍然可能有一些错误。我已经怀念现代浏览器的功能了。

【讨论】:

  • 仅供参考,我知道您提到这在您的帖子中可能不起作用(我只是认为您可能感兴趣); string.split is only supported from IE4
  • @OliverRadini 哦不!好吧,我不知道。在String.split() 之前人们用什么来分割字符串?
  • 我不知道哈,一定只是使用了一个循环并手动跟踪事情吗?可能实际上并不难做到,但重复起来很乏味!
  • setcookie() 是一个 PHP 函数,我用它通过 HTTP 从服务器端发送 cookie...
【解决方案2】:

所以我已经找到了这个问题的根源,我的困惑有三个原因:

首先,如果您没有为 cookie 设置 path= 参数,IE3 将假定 cookie 仅用于此确切路径。这意味着它会在再次访问 /test.php 时发回相同的 cookie,但不会在网站上的其他任何地方发回。

解决办法是在设置cookie的时候加上path=/。

其次,IE3 无法识别没有 Expires 参数的 cookie。解决方案是在 Set-Cookie 标头中包含 Expires=,采用“标准”cookie 格式。

第三个是由新的 Max-Age 参数引起的,由于某种原因由 PHP 帮助添加,IE3 无法识别。相反,它假定 Max-Age 之前的所有内容都是 cookie 名称。

解决方案是使用 PHP 的 header() 函数来设置 cookie,如下所示:

header('Set-Cookie: test2=hi; expires=Tue, 02-Feb-2021 04:20:00 GMT; path=/');

(在这种情况下,test2 是 cookie 的名称,hi 是内容,从今天起大约一年,即 2 月 2 日。)

【讨论】:

    猜你喜欢
    • 2012-01-02
    • 1970-01-01
    • 1970-01-01
    • 2015-03-19
    • 2013-03-23
    • 2014-05-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多