Rails 5.1应用程序。
我的 main_domain.com 被广告阻止程序阻止,因此用户无法使用指向我网站图片的直接链接。 我决定使用 new_domain.com + NGINX反向代理将请求从 new_domain.com 重定向到 main_domain.com ,并且可以正常工作。 NGINX配置:
server {
server_name new_domain.com;
location / {
proxy_set_header X-Connecting-IP $remote_addr;
proxy_pass https://main_domain.com;
}
}
但是有一个新问题:反向代理后 main_domain.com 上的cookie丢失了。
奇怪的是,在代理之后,请求和cookie内有正确的域:
pry(main)> request.domain
=> main_domain.com
pry(main)> cookies.request.domain
=> main_domain.com
但所需键uniq_key
为空:
pry(main)> cookies[:uniq_key]
=> nil
尽管它是以前创建的,并且如果我打开 main_domain.com ,则可以在浏览器开发控制台中看到。
为什么cookie为空,我如何阅读它们?预先感谢。
答案 0 :(得分:2)
(1)重定向和代理之间是有区别的。前者是当服务器发出特殊的HTTP状态以及新的资源位置并且浏览器向该新位置发出新请求时。因此,此处的浏览器发出了两个请求。后者是您的服务器转发对另一台服务器的请求时。从浏览器的角度来看,好像原始服务器返回了响应。
因此,根据您的源代码片段,您正在进行代理。
(2)Cookies属于域。当浏览器向 new_domain.com 发出请求时,它不会发送由 main_domain.com 设置的Cookie,因为浏览器仅向{{1} },因为您正在执行代理,而不是重定向。
我想我回答了您“为什么”的问题。我不知道“如何解决”,因为您的方法存在严重缺陷,而且我不知道有什么可能的权衡或可以承受的变更。