我使用 apache 作为我的应用程序 Web 服务器的代理,并希望即时更改与 sessionid cookie 关联的域名。
该cookie有一个与之关联的.company.com域,我想使用apache mod rewrite(或一些类似的模块),透明地将域更改为app.company.com。这可能吗 ?如果是这样,一个人会怎么做?
最佳答案
您只能更改 cookie 的域 在客户端上,或者在服务器上设置时 .设置 cookie 后,它的路径和域信息仅存在于客户端上。因此,现有的 cookie 不能在服务器上更改其域,因为该信息不会从客户端发送到服务器。
例如,如果您在本地计算机上有一个如下所示的 cookie:
MYCOOKIE:123, domain:www.test.com, path:/
您的服务器只会收到:
MYCOOKIE:123
在服务器上。为什么不发送路径和域?因为浏览器将这些信息保存在客户端上,并且不会费心发送它,因为它只会在页面位于 时将此 cookie 发送到您的服务器。 www.test.com 在路径 / .
由于它是您的服务器,因此您应该能够更改创建新 cookie 的代码。如果您觉得出于某种原因需要在代码之外执行此操作,您可以使用类似以下的内容来执行此操作,但您必须准确查看 cookie 在 header 中的写入方式以完全匹配它。以下是对此可行解决方案的未经测试的猜测,使用 Apache 的
mod_headers
:<IfModule mod_headers.c>
Header edit Set-Cookie (.*)(domain=.company.com;)(.*) $1 domain=app.company.com; $2
</IfModule>
您也可以使用
mod_headers
更改从客户端收到的 cookie,如果需要,如下所示:<IfModule mod_headers.c>
RequestHeader edit Cookie "OLD_COOKIE=([0-9a-zA-Z\-]*);" "NEW_COOKIE_NAME=$1;"
</IfModule>
这只会重命名您在请求中收到的 cookie。
关于apache - 更改 Cookie 域,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4923064/