0

我知道有一些技术可以通过 HttpBaseProtocolFilter.CookieManager 检索 WebView cookie,它至少在相同应用程序的边界内在 WebView 和 HttpClient 之间共享。但是,它不能访问 httponly cookie。httponly cookie 也不在 WebView 和 HttpClient 之间共享。坦率地说,我理解这些限制,但在我放弃之前,我想问一下是否有人解决了这个问题?

这就是我需要的。我们有一个用 Java 编写的网站。该站点生成 JSESSION httponly cookie 并将其传递给客户端。我们正在开发一个 UWP 应用程序,我们在其中实例化扮演客户端角色的 WebView。然后,我们注入 javascript 在 UWP 代码和显示的页面之间进行通信。一切都按预期完美运行。现在我们需要在当前会话的上下文中从 UWP 代码中执行一些请求。为此,我们需要在 UWP 中为 HttpClient 使用相同的 JSESSION,但我找不到这样做的方法。

每次我从 UWP 发送请求时,都会生成一个新的 JSESSION,这会阻止逻辑正常工作。那么,有什么方法可以从 WebView 中检索该 httponly cookie,或者用分配给 HttpClient 的那个来覆盖它?

4

1 回答 1

1

如果您Windows.Web.Http.HttpClient在 UWP 中使用和 WebView,cookie 会通过应用程序的上下文在 HttpClient 和 WebView 之间自动共享,包括 HttpOnly cookie。

为了验证它,我使用此文档上的 c# 代码在加载 asp.net 网页时创建了一个 HttpOnly cookie。然后,我制作了一个 UWP 应用程序并在 XAML 页面上添加了一个 WebView 来查看网站,在代码隐藏中,我使用以下代码来获取 cookie:

HttpBaseProtocolFilter filter = new HttpBaseProtocolFilter();
HttpCookieCollection cookieCollection = filter.CookieManager.GetCookies(new Uri("http://localhost:xxxxx/Default.aspx"));
foreach (var cookie in cookieCollection)
{
    Debug.WriteLine(cookie.Name+": "+cookie.Value+" HttpOnly: "+cookie.HttpOnly);
}

你可以看到截图。我可以得到 HttpOnly cookie:

在此处输入图像描述

于 2019-02-12T07:04:04.153 回答