我使用 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 发送到您的服务器if该页面位于测试网并在路径上/.
由于它是您的服务器,因此您应该能够更改创建新 cookie 的代码。如果您觉得出于某种原因需要在代码之外执行此操作,您可以使用类似以下内容来执行此操作,但您必须准确查看 cookie 在标头中的写入方式以使其完全匹配。以下是一个未经测试的猜测,使用 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。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)