#android #cookies #webkit
#Android #файлы cookie #webkit
Вопрос:
Я считываю файлы cookie аутентификации из WebView и повторно использую их в своих собственных подключениях для аутентификации. Это работает нормально, если я предполагаю, что все файлы cookie являются постоянными. Однако система, к которой я подключаюсь, различает постоянные («держите меня в системе») и сеансовые файлы cookie, и, похоже, я не могу получить эту информацию обратно из WebKit CookieManager.
Я создал небольшой пример приложения, который иллюстрирует проблему: https://github.com/Paul-JanPauptit/WebViewPersistentCookies
Моя настройка WebView:
private void initializeDialog() {
// Clear cookies (callback not handled in this test implementation)
CookieManager cookieManager = CookieManager.getInstance();
cookieManager.removeAllCookies(null);
WebView webView = new WebView(getContext());
webView.setLayoutParams(new LinearLayout.LayoutParams(WindowManager.LayoutParams.MATCH_PARENT, WindowManager.LayoutParams.MATCH_PARENT));
webView.setWebViewClient(new WebViewClient() {
@Override
public boolean shouldOverrideUrlLoading (WebView view, WebResourceRequest request)
{
CookieManager cookieManager = CookieManager.getInstance();
String cookiesString = cookieManager.getCookie(_url);
if (cookiesString != null)
Log.d(TAG, String.format("%s:n%s", request.getUrl().toString(), cookiesString));
return false;
}
});
WebSettings settings = webView.getSettings();
settings.setJavaScriptEnabled(true);
settings.setJavaScriptCanOpenWindowsAutomatically(true);
settings.setBuiltInZoomControls(true);
setContentView(webView);
webView.loadUrl(_url);
}
(обратите внимание, что это содержит дату истечения срока действия, через 5 дней)
Однако получение строки cookie из WebKit CookieManager:
FedAuth=77u/PD9[Redacted, same string as in Fiddler] 1nPT08L1NQPg==;
(обратите внимание, что это не содержит битов даты истечения срока действия)
При разборе на отдельные файлы cookie они в конечном итоге сохраняются = false, поэтому я не знаю, какие файлы cookie сохраняются в сеансах приложений.
Это ожидаемое поведение? Есть ли другой способ получить файлы cookie из WebKit без удаления даты истечения срока действия?