您好,我需要根据特定的 cookie 将主页重定向到另一个域,并且该 cookie 将在用户首次访问时由后端服务添加。
当我第一次访问 URL 时,cookie 已按预期添加,但随后我单击页面上的一些按钮,这些按钮向静态文件和后端服务发送请求,此时我希望页面应该重定向到另一个域,因为 cookie 已经存在。 但是重定向不起作用,当我手动刷新页面时它起作用。
所以我想知道它有什么问题? 重定向是否仅限于某种类型的请求?
还是因为重定向在 if 块中(我知道 if 在 Nginx 中是邪恶的,但我得到了重定向并且 return 是安全的)?
那么,有人能帮我弄清楚吗? 我是 Nginx 的新手,在此先感谢。
下面是我的 Nginx 配置。
location / {
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header REMOTE-HOST $remote_addr;
client_max_body_size 5000m;
error_page 502 =203 /50x.html;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
if ($cookie_LUCKY_ONE) {
return 301 http://anotherdomain.com;
}
index index.html;
try_files $uri $uri/ /index.html;
}
当浏览器向nginx发起请求时,获得了cookies。
这些请求是独立于页面请求之外的请求,这些请求头部已经带有cookies信息,到达nginx后,nginx会按照设置中的要求将这些请求重定向。但是,nginx不会将整个页面重定向,因为对于nginx来说,整个页面的内容已经在上一次请求中返回了,它不可能再去操控浏览器的内容。
正确的做法是:在点击按钮时,用js判断有没有cookies,由js去重定向,而不是由nginx去重定向。