我正在使用 jersey API 的客户端部分。
我正在查询一个休息端点,它向我发送回一个像这样的 cookie
Set-Cookie: SessionId=270080680;path=/myPath
阅读文档和其他 Stack Overflow 答案后,我能够检索 cookie 并将其发回。
但是 Jersey 可以自动管理每个客户端的 cookie 处理吗?并根据例如路径将需要发回的内容发回。
正如评论中所建议的,正确的方法似乎是创建一个过滤器并拦截请求来存储和重新发送 cookie。
这解决了问题的一部分,我仍然需要聪明地检查端点的路径以知道我应该发送哪个 cookie。
Jersey 可以帮我做吗?
最佳答案
并不适用于所有人,但就我而言,这个解决方案非常适合!所以我决定分享一下
按照建议,我开始创建自己的过滤器,一切似乎都很好!但有时我发现我的 cookie 是重复的。
经过挖掘,这就是我发现的,所以我处于 JavaFX 应用程序的特定上下文中,并使用依赖于 HttpURLConnection 的最简单的 Jersey 客户端实现。
我注意到,从我的应用程序显示 WebView 时起,我的 cookie 就被复制了。 我在WebPage.java中找到了这段代码
if (CookieHandler.getDefault() == null) {
boolean setDefault = Boolean.valueOf(System.getProperty(
"com.sun.webkit.setDefaultCookieHandler",
"true"));
if (setDefault) {
CookieHandler.setDefault(new CookieManager());
}
}
所以这个错误实际上是我的答案。就我而言,已经有人负责管理 cookie
管理所有 cookie jvm 范围的一行是:
CookieHandler.setDefault(new CookieManager());
关于java - 为每个客户端维护与 jersey CLIENT 的 cookie session ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61254795/