不可杀死的cookie(ASP3,PHP5,IIS5,FF3​​.5,IE8)

时间:2009-08-08 15:28:13

标签: asp.net cookies

我有一个用PHP生成cookie的系统,然后需要从经典的ASP中删除它。这是一个快速而又脏的开发盒,只是运行IIS5,PHP5和ASP3的备用XP机器。我使用hosts文件创建了一个假域名(www.localtest.com),因为该过程的其他部分不能与localhost一起使用。

PHP文件位于站点根目录下的子目录中,但cookie域为.localtest.com,路径为root(/)。 cookie名称是“authkey”,值是32字节的哈希码。

ASP文件位于站点根目录中(暂时)。它可以在PHP创建后很好地读取cookie,但无论我尝试什么,我似乎都无法从ASP更改cookie - 它不会更改值,更不用说更改过期。 Firefox 3.5和IE 8都忽略了我所做的每一次尝试(数据表明,当他们最终达成一致意见时,就是这样)。

我尝试了很多很多变体 - 只设置过期(以各种格式的各种值),将所有参数设置为与过期之外的cookie完全匹配,使用Response.AddHeader发出Set-Cookie标题包含所有这些变体,将值设置为false,然后最后只是尝试将值更改为其他失败的字符串。

到底发生了什么事?这是一个与“假”域运行的ASP副作用吗?我已经开发了这种方式10多年没有看到ASP与主机指定的域有任何问题,虽然我从来没有机会删除cookie(奇怪的是)。

我特别惊讶于我甚至无法设定价值。

2 个答案:

答案 0 :(得分:2)

使用Fiddler或类似内容查看实际的HTTP流量 - 只要正在发送正确的HTTP标头,服务器技术就无关紧要了。可能他们不是,但除非你看一下HTTP流,否则你不会确定。

(通常我建议Wireshark,但是当客户端和服务器在同一台机器上时,这不起作用。)

答案 1 :(得分:0)

怪异。

问题是域名中的前导点。由于我的网站不使用子域名,我实际上并不需要它 - 但显然如果那里有点,浏览器将不会删除或更改cookie。

我想知道这是否是新的行为,因为我知道很多系统都依赖它来制作子域中立的cookie(例如phpBB)。

此外,要删除cookie,我必须指定所有内容 - 域,路径和日期,但我认为这实际上是根据RFC,所以我不太关心它。