在Internet Explorer 3.0中设置cookie



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

我正在使用PHP,就像这样:setcookie('test', '1');

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

也许有人有一些老经验,或者有一本1997-1998年的网络开发书?

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

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

我不确定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。但值得一试。

如果你需要更多信息,你可以查阅MDN文档

p.S.我尽可能多地编写旧javascript类型,但可能仍然存在一些错误。我已经错过了现代浏览器的功能。

所以我已经深入了解了这个问题,造成我困惑的原因有三个:

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

解决方案是在设置cookie时包含path=/。

其次,IE3无法识别没有Expires参数的cookie。解决方案是将Expires=以"标准"Cookie格式包含在Set 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日到期。)

最新更新