如何从UWP WebView提取httponly cookie?

时间:2019-02-11 00:25:32

标签: javascript cookies webview uwp cookie-httponly

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

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

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

1 个答案:

答案 0 :(得分:0)

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

为了验证它,我在加载document时使用了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:

enter image description here