java - cookie在本地删除,但在部署时不删除
问题描述
我正在尝试使我的代码创建的 cookie 无效。我想这样做创建一个新的端点来注销。我必须根据端点是否返回数据在两条路径之间进行选择。当我在本地运行代码时,它就像一个魅力。删除 cookie 并重定向到正确的 url,但是,如果我测试它部署在远程服务器上,它不起作用,这意味着它正确重定向但不会使 cookie 过期,也不会修改其值。我的整个代码必须是后端代码,因此我无法重定向到会删除 cookie 并再次重定向的 javascript。
@RequestMapping(value = "/logout", method = RequestMethod.GET)
public void cookieKiller(
@CookieValue(name = "theCookie", required = false) Cookie myCookie,
HttpServletResponse response, HttpServletRequest request) {
if (myCookie != null) {
} else { // Just being cautious, if the cookie is not retrieved, would be overwritten anyway just in case
myCookie = new Cookie("theCookie","");
}
myCookie.setMaxAge(0);
myCookie.setValue("");
myCookie.setPath("/");
response.addCookie(myCookie);
boolean endpointHealthy = true;
if(haveITheEndpointUrls()) {
endpointHealthy = false;
} else {
try {
String eaiResponseJson = restTemplateAutowired.getForEntity(new URI(oneUrl),String.class).getBody();
if (eaiResponseJson != null && !eaiResponseJson.isBlank()) {
response.sendRedirect(eaiSamlUrl);
} else {
endpointHealthy = false;
}
} catch (IOException e) {
endpointHealthy = false;
} catch (ResourceAccessException e) {
endpointHealthy = false;
} catch (HttpClientErrorException e) {
endpointHealthy = false;
} catch (Exception e) {
endpointHealthy = false;
}
}
if (!endpointHealthy) {
try {
response.sendRedirect(request.getContextPath() + "/internal/Path");
} catch (IOException ex) {
// ...
}
}
}
如果我添加一个新的 cookie,生成的域与应用程序前面介绍的原始域不同。作为后面的“domain.com”和前面的“.domain.com”,所以我想这是一个域的事情
我一直在尝试更改路径,更改值等,但它也不起作用,我在 stackoverflow 上冲浪了很多以寻找答案但没有任何结果。关于域的一些建议或线索或我可能遗漏的任何提示?
解决方案
我在本地的代码正在生成一个类似 domain.com 的 cookie,但 SHibboleth 需要以点开头的 cookie 域。我尝试以这种方式创建 cookie,但除非您使用 LegacyCookieManager,否则在 Tomcat 中这是不可能的。
推荐阅读
- javascript - Angular 8 baseUrl 被消灭了
- xamarin - 在 Xamarin.Forms 中手动删除和添加元素到 App Shell 时如何暂停 UI / App Shell 更新?
- cytoscape.js - Cytoscape js - 每当单击节点时调用一个函数
- javascript - 赛普拉斯不处理异常
- laravel - 当响应是错误时,为什么承诺会进入 .then() ?- 拉拉维尔
- domain-driven-design - 聚合根的查询子项的存储库方法
- android - Android:没有cursorLoader的同一光标中的图像和视频路径
- mysql - 如何避免使用 Mysql 识别连字符时出错
- python - ImportError:无法从“json”(未知位置)导入名称“loads”
- linux - 通过寄存器将参数传递给 execve(2)