从两个服务器为一个 url 提供两个页面
Serve two pages from two server for one url
我想为一台 url 从两台服务器提供两个不同的页面。类似 facebook 的登录页面(登录页面与个人资料页面相同 url)。
服务器如何知道要提供哪个页面?我选择了 cookie,因为我想不出其他解决方案。
注销时还需要删除 cookie。我最终在 nginx 配置上使用分支将请求推送到正确的服务器并在那里删除(设置过期时间)cookie。
好的,现在是 bug 本身。 Chrome 缓存此 url 并且当用户单击 link(到相同的 url)时 chrome 跳过对服务器的请求并从缓存中打开错误的版本。它在检查调试面板中的 "disable cache" 时起作用,我还通过使用 wireshark 检查流量来确认这一点。
从浏览器的角度回顾 urls:
ex.com/ - Server A
ex.com/login_check - Server A -> redirects to / with cookie
ex.com/ - Server B
ex.com/?logout - Server A and remove cookie
ex.com/ - chrome skips request and serves cached content from B
如何解决这个问题?此外,这种方法看起来太神奇了,很多事情都可能出错。可以换个方式吗?
这可以通过为两个服务器的响应添加 header 来解决。
Cache-Control: private, max-age=0, must-revalidate, no-store;
我想为一台 url 从两台服务器提供两个不同的页面。类似 facebook 的登录页面(登录页面与个人资料页面相同 url)。
服务器如何知道要提供哪个页面?我选择了 cookie,因为我想不出其他解决方案。
注销时还需要删除 cookie。我最终在 nginx 配置上使用分支将请求推送到正确的服务器并在那里删除(设置过期时间)cookie。
好的,现在是 bug 本身。 Chrome 缓存此 url 并且当用户单击 link(到相同的 url)时 chrome 跳过对服务器的请求并从缓存中打开错误的版本。它在检查调试面板中的 "disable cache" 时起作用,我还通过使用 wireshark 检查流量来确认这一点。
从浏览器的角度回顾 urls:
ex.com/ - Server A
ex.com/login_check - Server A -> redirects to / with cookie
ex.com/ - Server B
ex.com/?logout - Server A and remove cookie
ex.com/ - chrome skips request and serves cached content from B
如何解决这个问题?此外,这种方法看起来太神奇了,很多事情都可能出错。可以换个方式吗?
这可以通过为两个服务器的响应添加 header 来解决。
Cache-Control: private, max-age=0, must-revalidate, no-store;