ProxyPassReverseCookieDomain动态变量

问题描述 投票:2回答:1

我需要从域B使用位于域A中的一些其他API。登录服务负责设置cookie。使用代理我可以从B访问域A没有问题。

遗憾的是,检查响应标头时,cookie域设置为A,服务位于此处,因此浏览器不会将cookie存储在调用服务的域B中。

在生产环境中,这不是问题,因为前端和后端属于同一个域。但是,在本地工作时,前端位于localhost上,后端位于虚拟机内。

我发现将cookie设置到另一个域的唯一方法是apache指令ProxyPassReverseCookieDomain

它运作良好。我可以设置ProxyPassReverseCookieDomain virtualMachineHost myLocalDomain

问题是虚拟机内的所有其他服务都无法再获取cookie。

我想为指令设置动态变量,将cookie域设置为请求主机。我按照apache文档中的建议尝试使用ProxyPassReverseCookieDomain virtualMachineHost %{HTTP_HOST},但看起来变量没有扩展。它被视为字符串,因此cookie域设置为“%{HTTP_HOST}”。

有没有办法使用apache环境变量来实现这一目标?

谢谢。

apache cookies
1个回答
1
投票

我知道这是非常老的,我对我正在运行的反向代理应用程序有同样的要求。不幸的是,我相信apache是​​不可能的。另一方面,一个非常简单的解决方法可能会做我们想要的,见下文;

在你的apache反向代理之上使用nginx作为反向代理,非常简单的配置,这就是你想要的“proxy_cookie_domain”

server {
  listen 80; //or your port
  server_name *.example.com;
  access_log /var/log/nginx/example.log;
  location / {
    proxy_pass http://apache_proxy_servers;
    proxy_cookie_domain ~\.*$ $host; // this is your line
  }
}
© www.soinside.com 2019 - 2024. All rights reserved.