我需要从访问服务器的HTTP请求中删除cookie。在客户端(写入此cookie)或服务器(读取它)上执行此操作不是一种选择。我有Apache 2.0代理客户端和服务器之间的请求,所以我希望使用mod_rewrite在Apache中删除cookie。
我的问题是,有没有办法使用mod_rewrite从HTTP请求中删除某个cookie?
如果无法仅删除一个 Cookie,那么作为从请求中删除所有 Cookie的最后手段?
如果mod_rewrite不是此任务的正确工具,我愿意接受有关如何完成此操作的其他建议。
答案 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