2011-03-23 82 views
16

我有一個主窗口,在它裏面,我有一個QWebView。 我想讓一個特定的網站(例如www.kdkdkkd.com)爲cookies,因此每次用戶關閉並重新打開瀏覽器時,他都不需要再次登錄。Qt WebKit和永久餅乾

謝謝,

回答

26

您需要設置自己的「Cookie Jar」。

  1. 使用QNetworkAccessManager::setCookieJar
  2. 擴展QNetworkCookieJar - 因爲它關閉瀏覽器時默認不堅持餅乾:

一旦QNetworkCookieJar對象 刪除,它持有的所有cookies將被丟棄 也。如果您想要保存 的Cookie,您應該從 這個類派生出來並實現將保存到 的磁盤轉換爲您自己的存儲格式。 (從QNetworkCookieJar documentation

您可以通過推到永久存儲在每個QNetworkCookieJar::setCookiesFromUrl(最安全的,但最慢),或者僅在關閉瀏覽器窗口(整體速度較快,但不太安全的,因爲如果你退出異常餅乾做到這一點罐子不會被保存)。

請注意,some cookies不應該被持續,您可以使用QNetworkCookie::isSessionCookie來確定這一點。

+0

我相信你的意思是:QNetworkCookieJar :: setCookiesFromUrl我會檢查這一點。 – snoofkin 2011-03-23 16:27:51

+0

的確,修正後的 – 2011-03-25 00:14:20

+0

可以請您解釋一下代碼,我無法存儲cookies – tharunkumar 2016-05-11 10:44:39

1

一旦在NAM(NetworkAccessManager)登記保存cookie,設置web視圖使用它:

myWebView->page()->setNetworkAccessManager(myNAM);

+0

請考慮改進格式並且有點描述性。 – nikhil 2012-10-11 17:59:57

4

有一個正式的Qt演示,被稱爲 「Browser」。它實現了一個CookieJar類,它支持使用QSettings堆棧將Cookie保存並加載到.ini文件。

+1

鏈接將有所幫助。 – freakTheMighty 2013-06-21 19:45:49