在 Play+Java 中迭代 cookie

Iterating cookies in Play+Java

我一直在研究管理播放应用程序存储的 cookie。理想情况下,我想为该用户迭代所有 cookie,并根据某些条件有选择地删除一些。不过,在我这样做之前,我想简单地迭代 cookie 以查看它们,例如:

for (Http.Cookie cookie : Http.Context.current().response().cookies()) {
    Logger.info("cookie " + cookie.name());
}

尽管我们在应用程序的许多其他地方有效地使用了 cookie,但 cookies() 却一无所获。如果我查看 cookies().size,它是 0。我打开 Web 检查器,显示大约 15-20 个可用的 cookie。我使用了错误的命令吗?

我对此进行了进一步调查,有时我会得到一些 cookie,但在 Web 检查器中可见的 20 个 cookie 中从来没有超过 1 个或 2 个。我能够验证这些 cookie 是否正在其他地方读取。我什至可以 .get(name) 未出现在迭代器中的特定 cookie。

您正在从响应而非请求中读取 cookie。响应将仅显示您在当前请求中设置的 cookie,因为 cookie 仅在您设置它们时在响应中发送。如果要查看所有传入的 cookie,则需要遍历请求中的 cookie:

for (Http.Cookie cookie : Http.Context.current().request().cookies()) {
    Logger.info("cookie " + cookie.name());
}