apache - 更改 Cookie 域

标签 apache mod-rewrite dns session-cookies

我使用 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/

相关文章:

php - 为什么 apache2 不重定向到 https,或者按照我对 mediawiki 的期望行事?

php - 在 php.ini 中设置 date.timezone 不起作用

java - 如何安装 Apache Ant?

apache - 为 mod_rewrite 的 RewriteRule 替换强制使用 URL 路径

regex - url 中存在空格的 mod 重写问题

linux - 如何将多个 IP 地址映射到单个服务器的文件

PostgreSQL 域 : no numbers

python - 从 Python 脚本重新加载 Apache

php - htaccess 将根目录中的所有文件重定向到子目录中的相应页面

dns - 使Fiddler工作的DOT背后的魔力是什么?