我正在为网络应用程序构建用户跟踪系统。人们可能来自许多网址。我想知道这些网址来自哪些网址。 我这样设计网址:http://www.example.com/ref/XXXXXXX .
我创建了一个过滤器来处理传入的请求:
String cookieKey = "examplesite.cookie";
String cookieValue = referralIdentifier;
Cookie cookie = new Cookie(cookieKey, cookieValue);
cookie.setMaxAge(60*60*24*365);
((HttpServletResponse) response).addCookie(cookie);
HttpServletResponse resp = (HttpServletResponse)response;
resp.addCookie(cookie);
resp.sendRedirect("/");
执行此代码时,我无法在浏览器中看到设置的 cookie。
如果我将重定向更改为转发,我可以看到 cookie。 我看到这篇博文how to track people with cookie and redirect博主建议使用代码重定向的地方。
所以我更改了代码并将 resp.sendRedirect("/");
替换为
resp.setStatus(HttpServletResponse.SC_MOVED_PERMANENTLY);
resp.setHeader("Location", "http://www.example.com/");
这里我可以在 Firefox 中看到 cookie,但在 Chrome 中看不到。
重定向后是否有跟踪用户的解决方案?
最佳答案
根据 http://www.javamex.com/tutorials/servlets/cookies_api.shtml默认情况下,cookie 对“请求设置 cookie 的父级的子路径”可见。
这可能是您的问题。要使 cookie 在所有路径上可见,您可以使用 cookie.setPath("/")
将路径设置为“/”。
关于java - 是否有一种解决方案可以在重定向响应时在浏览器上保留 cookie?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28788736/