我正在与我的应用程序进行第三方集成。我需要在用户的浏览器中设置一个服务器端cookie,以便第三方的SDK可以识别该 session 有效并允许用户与其交互。我在登录并调用(3d 方)服务时获得的实际 cookie 名称和值,现在我必须将其保存在浏览器中。 收到 cookie 信息后,我创建一个新的 javax.servlet.http Cookie 并传递此信息:
Cookie cookie = new Cookie("cookieName", "cookieValue");
然后,我将其存储在 (HttpServletResponse) 响应中,如下所示:
response.addCookie(cookie);
当我从应用程序触发登录事件时,我看到此 cookie 出现在开发人员工具中的 Cookies 下。但是,一旦页面刷新,或者我转到另一个页面(在我的应用程序内),cookie 就会消失。为什么,这是个问题。我希望它保留到用户注销为止。
我也不知道我正在做的事情是否可能。跨域共享 cookie? 根据第三方的指示,一旦他们的 SDK 加载到我的应用程序中,它将开始“搜索”此特定 cookie 名称并基于该同步状态。
最佳答案
嗯,经过大量搜索,我找到了原因; cookie 的默认路径。由于cookie是在domain.com/page1上创建的,这意味着它仅对page1和以下子目录有效。它不适用于整个domain.com。 希望这会对遇到类似问题的其他人有所帮助。
关于java - HttpServletResponse、addCookie() 的行为不符合预期,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61252543/