0

我试图弄清楚如何在不每次通过这个 vbscript 编写会话 cookie 的情况下删除 cookie。

我们有两个 cookie,第一个是在网站运行的域上设置的

response.AddHeader "Set-Cookie","cookie1=value;expires=Sun, 18-Jan-2037 00:00:00 GMT;path=/"

这将域设置为 a.sitename.com。对于新版本,我们将 cookie 设置为主域。

response.AddHeader "Set-Cookie","cookie1=value;expires=Sun, 18-Jan-2037 00:00:00 GMT;domain=sitename.com;path=/"

我需要删除域上的cookiea.sitename.com而不删除域上的cookie sitename.com

我发现我可以将 cookie 设置为在今天之前过期,它会在会话结束时被清除。但是我不想每次通过这段代码都在会话结束时删除一个新的 cookie 过期。

If( some check here ) then
  response.AddHeader "Set-Cookie","cookie1=value;expires=Thu, 01 Jan 1970 00:00:00 GMT;path=/"
End If

vbscript 中检查特定子域上是否存在 cookie 的最佳方法是什么,而根域上是否存在具有相同名称和值的 cookie?

4

2 回答 2

1

您必须意识到,出于安全目的,浏览器将对某些功能和数据进行沙箱处理。因此,它不会在 HTTP 请求中告诉您 cookie 设置到哪个域。它仅将浏览器认为对请求有效的 cookie 发送到您的服务器,然后您只会看到 cookie 名称和值。

于 2013-11-22T00:55:25.310 回答
1

你不能那样做。“在此处进行一些检查”根本没有服务器端的信息。

浏览器根据用户正在浏览的域知道要发送哪些 cookie。但是,发送给您的 cookie 标头不包含该信息。

一些建议:

  • 使用不同的 cookie 名称
  • 如果您无法更改 cookie 名称,请确保 cookie 中存储的数据以某种方式向后兼容旧值,并且您将能够优雅地处理数据的两种“格式”
  • 我最近遇到的一个特殊情况:我的生产 cookie (mysite.com) 干扰了我的测试 cookie (test.mysite.com)。我的解决方案是为我的测试环境创建一个自定义 HOSTS 条目并将其作为 test-mysite.com 访问,这样就不会有 cookie 冲突。

希望这可以帮助。

于 2013-11-25T11:26:51.543 回答