0

我有一个问题,即部署到两个隔离环境的相同代码(Web 应用程序)在“注销”时表现不同。

唯一明显的关键区别是 Server1 不是安全协议,因此http://myurl. Server2 是安全协议,并且是https://myurl.

这些服务器都在 II6 中托管 Web 应用程序,我已经梳理了设置以找到不同之处,但没有任何突出之处。Web 配置没有任何类型的特殊声明。

“注销”机制很简单,将相关 cookie 的到期时间设置为前一天,然后重定向回主页。

Request.Cookies["MyCookie"].Expires = DateTime.Now.AddDays(-1d);
Response.Cookies.Add(Request.Cookies["MyCookie"]);
Response.Redirect("~/Folder/Homepage.aspx");

有没有人知道为什么相同的代码在一台服务器上的行为与另一台服务器上的行为不同?

我已经用一些流行的浏览器 IE8/9、Chrome、Firefox 进行了尝试,结果相同。即使使用资源实用程序检查 cookie 也会显示 server1(http) 正确处理 cookie 并且 server2(https) 保留 cookie(检查过期日期会发现日期确实设置为昨天,但它仍然保留它。)

4

1 回答 1

0

事实证明,因为生成 cookie 的登录控件是一个重用控件,所以有一个硬编码的域集。所以我抓取了 cookie,修改了域值,并将其设置为我当前的域。完成此操作后,我就能够正确地使 cookie 过期。

于 2013-07-26T10:28:17.967 回答