检查特定子域上是否存在重复的cookie?

时间:2013-11-14 18:54:16

标签: cookies asp-classic vbscript

我试图弄清楚如何在不通过此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=/"

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

我发现我可以将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?

2 个答案:

答案 0 :(得分:1)

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

答案 1 :(得分:1)

你做不到。 “有些检查”根本就没有服务器端的信息。

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

一些建议:

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

希望这有帮助。