我需要从域B中使用位于域A中的一些其他API。 登录服务负责设置cookie。使用代理我可以毫无问题地从B访问域A。
不幸的是,检查响应标头时,cookie域被设置为A,服务所在的位置,因此浏览器不会将cookie存储在域B中,从中调用服务。
在生产环境中,这不是问题,因为前端和后端属于同一个域。但是,在本地工作时,前端位于localhost上,后端位于虚拟机内。
我发现将cookie设置到另一个域的唯一方法是apache指令.*
。
效果很好。我可以设置ProxyPassReverseCookieDomain
。
问题是虚拟机内的所有其他服务都无法再获取cookie。
我想为指令设置动态变量,将cookie域设置为请求主机。
我已经按照apache文档中的建议尝试使用ProxyPassReverseCookieDomain virtualMachineHost myLocalDomain
,但看起来变量未展开。它被视为一个字符串,因此cookie域设置为"%{HTTP_HOST}"。
有没有办法使用apache环境变量来实现它?
感谢。
答案 0 :(得分:1)
我知道这已经很老了,我对正在运行的反向代理应用程序有相同的要求。不幸的是,我相信这是不可能的。另一方面,很简单的解决方法可能会实现我们俩想要的功能,请参见下文;
使用nginx作为apache反向代理之上的反向代理,配置非常简单 这就是你想要的“ 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
}
}