如何使用 Apache 将 cookie 值附加到响应位置标头的末尾?
Posted
技术标签:
【中文标题】如何使用 Apache 将 cookie 值附加到响应位置标头的末尾?【英文标题】:How to append cookie value to end of response Location header with Apache? 【发布时间】:2011-04-22 01:07:21 【问题描述】:我有一个发出 HTTP 重定向的页面。我需要将当前会话 ID (jsessionid) 附加到 HTTP 重定向的末尾,以将此 ID 作为重定向中的 GET 参数传递。
mod_header
的 Header append
指令可以通过 SetEnvIf
获取 cookie 值吗?
是否应该参与重写?但是mod_rewrite
只是重写了 request 而不是 response,是吗?
在不触及后端代码的情况下,您将如何从 Apache 的角度解决这个问题?
更新:Apache-JVM 由 mod_jk 或通过 IBM HTTP Server 连接到 WebSphere 来处理。
【问题讨论】:
如何连接到后端?您是使用 mod_proxy/mod_jk 连接到后端,还是像 mod_python/mod_php 这样的内部 apache 模块? 据我所知,没有办法获得单个 cookie 名称/值。但是您可以使用%HTTP_COOKIE
在RewriteRule
中获得完整的Cookie:
字段。见httpd.apache.org/docs/current/mod/mod_rewrite.html#rewritecond
@Lekensteyn,我只使用过重写来重写 INCOMING 请求,它们如何用于重写响应的标头?
【参考方案1】:
据我所知,使用 Apache HTTPd 你可以这样做:
SetEnvIf Cookie "mycookie=([^;]+)" MYCOOKIE=$1
SetEnvIf Cookie "mycookie=([^;]+)" HAVE_MYCOOKIE=1
Header add Set-Cookie "mycookie=%MYCOOKIEe; expires=0" env=HAVE_MYCOOKIE
如果需要,您还可以添加额外的 cookie 属性,例如路径和域。
【讨论】:
这不会将cookie添加到每个传出响应中吗? Xepoch 只希望它用于重定向类型的响应。 确实,我忽略了这个要求,但是我不知道立即解决这个问题。以上是关于如何使用 Apache 将 cookie 值附加到响应位置标头的末尾?的主要内容,如果未能解决你的问题,请参考以下文章
将 cookie 附加到 WorkLight Adapter 响应标头
如何将我的域名附加到我的服务器 IP 地址 (Apache)