2013-11-14 106 views
0

我想弄清楚如何删除该cookie,而无需每次通过此vbscript写入会话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。

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的最佳方式,同时存在具有相同的名称和值在根域饼干吗?

回答

1

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

1

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

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

几点建议:

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

希望这会有所帮助。