Qt WebKit и постоянные файлы cookie - PullRequest
16 голосов
/ 23 марта 2011

У меня есть главное окно, в нем у меня есть один QWebView. Я хочу сделать файлы cookie определенного веб-сайта (например, www.kdkdkkd.com) постоянными, поэтому каждый раз, когда пользователь закрывает и повторно открывает браузер, ему не нужно снова регистрироваться.

Спасибо

Ответы [ 3 ]

26 голосов
/ 23 марта 2011

Вам нужно установить свой собственный "Cookie Jar".

  1. Использовать QNetworkAccessManager::setCookieJar.
  2. Расширить QNetworkCookieJar - поскольку по умолчанию при закрытии браузера он не сохраняет файлы cookie:

После удаления объекта QNetworkCookieJar все файлы cookie, которые он хранитбудет также отброшенЕсли вы хотите сохранить файлы cookie, вы должны использовать этот класс и реализовать сохранение на диск в своем собственном формате хранения.(Из QNetworkCookieJar документации .)

Вы можете сделать это, нажав на постоянное хранилище для каждого QNetworkCookieJar::setCookiesFromUrl (самый безопасный, но самый медленный) илитолько когда окно браузера закрыто (в целом быстрее, но менее безопасно, как если бы вы выходили ненормально, файл cookie не будет сохранен).

Обратите внимание, что некоторые файлы cookie не должны сохраняться, вы можете использовать QNetworkCookie::isSessionCookie, чтобы определить это.

4 голосов
/ 13 марта 2013

Существует официальная демонстрация Qt, которая называется " Browser ". Он реализует класс CookieJar, который поддерживает сохранение и загрузку файлов cookie в файл .ini, используя стек QSettings.

1 голос
/ 19 июля 2012

После того, как файлы cookie зарегистрированы в NAM (NetworkAccessManager), установите для веб-просмотра его использование:

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

...