为每位客户维护与球衣客户的cookie会话



我正在使用jersey API的客户端部分。

我正在查询一个rest端点,该端点向我发回一个类似的cookie

Set-Cookie: SessionId=270080680;path=/myPath

通过阅读文档和其他Stack Overflow的答案,我可以检索cookie并将其发回。

但是Jersey能为每个客户端自动管理这种cookie处理吗?例如,根据路径发回需要发回的内容。

正如评论中所建议的,正确的方法似乎是创建一个过滤器和拦截请求来存储并重新发送cookie。

这解决了问题的一部分,我仍然需要聪明地检查端点的路径,以知道我应该发送哪个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());
}
}

所以bug实际上就是我的答案。有人已经负责管理cookie在我的情况下

在jvm范围内管理所有cookie的一行是:

CookieHandler.setDefault(new CookieManager());

我让你在这里和这里查看文档,了解如何使用

相关内容

  • 没有找到相关文章

最新更新