簡體   English   中英

如何從UWP WebView提取httponly cookie?

[英]How to extract httponly cookies from UWP WebView?

我知道有一些通過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替代它嗎?

如果您在UWP中使用Windows.Web.Http.HttpClient和WebView,則cookie會通過應用程序的上下文在HttpClient和WebView之間自動共享,包括HttpOnly cookie。

為了驗證它,我在加載asp.net網頁時使用了本文檔中的c#代碼創建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:

在此處輸入圖片說明

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM