【问题标题】:Check to see if a duplicate cookie exists on a specific subdomain?检查特定子域上是否存在重复的 cookie?
【发布时间】:2013-11-25 19:26:51
【问题描述】:

我试图弄清楚如何在不每次通过这个 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 的最佳方法是什么?

【问题讨论】:

    标签: cookies asp-classic vbscript


    【解决方案1】:

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

    【讨论】:

      【解决方案2】:

      你不能那样做。 “some check here”根本没有服务器端的信息。

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

      一些建议:

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

      希望这会有所帮助。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2017-09-14
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多