【问题标题】:How to remove a cookie in Apache如何在 Apache 中删除 cookie
【发布时间】:2010-12-20 09:13:26
【问题描述】:

我需要从到达服务器的 HTTP 请求中删除一个 cookie。在客户端(写入此 cookie)或服务器(读取它)上执行此操作不是一种选择。我有 Apache 2.0 代理客户端和服务器之间的请求,所以我希望使用 mod_rewrite 在 Apache 中删除 cookie。

我的问题是,有没有办法使用 mod_rewrite 从 HTTP 请求中删除某个 cookie?

如果无法仅删除 一个 cookie,那么作为最后的手段从请求中删除 所有 cookie?

如果 mod_rewrite 不是完成此任务的正确工具,我愿意接受有关如何完成此任务的其他建议。

【问题讨论】:

  • 您可以使用 CO 标志使用 mod_rewrite 重写 cookie

标签: apache mod-rewrite apache2


【解决方案1】:

Apache mod_rewrite 允许操纵 URL,但不允许操纵 HTTP 标头,但是 'mod_headers' 将允许您这样做。

所以,你可以使用:

RequestHeader unset Cookie

这将从请求中删除 所有 cookie。我不确定是否可以使用这种技术仅删除特定的 cookie。

或者,您可以使用以下方法停止将 cookie 传递回客户端:

Header unset Set-Cookie

如果这样更合适的话。

【讨论】:

  • 可以使用 mod_rewrite 设置 cookie。但据我所知,仅用于对客户的响应。
【解决方案2】:

使用 Apache > 2.2.4,you could have used

RequestHeader edit Cookie "^(.*?)ANY_COOKIE=.*?;(.*)$" $1$2

【讨论】:

  • This: RequestHeader edit Cookie "^(.*?)ssosession=.*?(?:$|;)(.*)$" $1$2 即使标题不以; 结尾也有效。
  • RequestHeader edit cookie ANY_COOKIE=[^;]*?($|;) "" 也应该可以工作:这样您就不必捕获前缀/后缀部分并将它们放回原处。
【解决方案3】:

您可以在 apache 反向代理配置中使用以下语句来管理特定的 cookie:

要删除任何特定的 cookie,您可以使用:
'标题添加 Set-Cookie "ANY_COOKIE='';expires='SOME_DATE_IN_PAST'; Max-Age=0; Path=COOKIE_PATH" '

通过指定过去的日期,您告诉浏览器 cookie 已过期,浏览器将丢弃 cookie。

要添加您可以使用的任何 cookie:
'Header add Set-Cookie "ANY_COOKIE='ANY_VALUE';expires='SOME_FUTURE_DATE'; Path=COOKIE_PATH"'

请务必指定某个未来的日期。如果您不指定任何日期,cookie 将被视为会话 cookie。

尝试使用以下方法从请求中删除特定的 cookie:

'RequestHeader add Cookie "ANY_COOKIE='';expires='SOME_PAST_DATE'; Path=COOKIE_PATH"'

【讨论】:

  • 尝试使用以下方法从请求中删除特定 cookie:'RequestHeader add Cookie "ANY_COOKIE='';expires='SOME_PAST_DATE'; Path=COOKIE_PATH"'
  • 我认为 RequestHeader add Cookie 实际上会为您创建 3 个 cookie。 (ANY_COOKIE, expired and Path) 这可能不是你想要的。
【解决方案4】:

我用它来取消设置所有 cookie(适合提供静态内容)

Header unset Cookie
Header unset Set-Cookie

【讨论】:

    猜你喜欢
    • 2013-07-22
    • 1970-01-01
    • 2021-11-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-04-04
    • 2011-01-09
    相关资源
    最近更新 更多