如何在Apache中删除cookie

时间:2009-11-25 17:10:31

标签: apache mod-rewrite apache2

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

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

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

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

4 个答案:

答案 0 :(得分:20)

Apache mod_rewrite允许操纵URL而不是HTTP标头,但是'mod_headers'可以让你这样做。

所以,你可以使用:

RequestHeader unset Cookie

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

或者,您可以使用以下命令停止将cookie传回客户端:

Header unset Set-Cookie

如果那更合适。

答案 1 :(得分:9)

使用Apache> 2.2.4,you could have used

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

答案 2 :(得分:8)

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

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

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

添加您可以使用的任何Cookie:
''标题添加Set-Cookie“ANY_COOKIE ='ANY_VALUE'; expires ='SOME_FUTURE_DATE';路径= COOKIE_PATH”'

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

尝试使用以下命令从请求中删除特定Cookie:

'RequestHeader添加Cookie“ANY_COOKIE =''; expires ='SOME_PAST_DATE';路径= COOKIE_PATH”'

答案 3 :(得分:0)

我用它来取消设置所有cookie(很好地提供静态内容)

Header unset Cookie
Header unset Set-Cookie