Класс QNetworkCookieJar
Класс QNetworkCookieJar реализует простой контейнер для объектов QNetworkCookie. Подробнее...
| Заголовок: | #include <QNetworkCookieJar> |
| qmake: | QT += network |
| С тех пор как: | Qt 4.4 |
| Наследует от: | QObject |
Этот класс был представлен в Qt 4.4.
Открытые функции
| QNetworkCookieJar(QObject *parent = nullptr) | |
| virtual | ~QNetworkCookieJar() |
| virtual QList<QNetworkCookie> | cookiesForUrl(const QUrl &url) const |
| virtual bool | deleteCookie(const QNetworkCookie &cookie) |
| virtual bool | insertCookie(const QNetworkCookie &cookie) |
| virtual bool | setCookiesFromUrl(const QList<QNetworkCookie> &cookieList, const QUrl &url) |
| virtual bool | updateCookie(const QNetworkCookie &cookie) |
Защищенные функции
| QList<QNetworkCookie> | allCookies() const |
| void | setAllCookies(const QList<QNetworkCookie> &cookieList) |
| virtual bool | validateCookie(const QNetworkCookie &cookie, const QUrl &url) const |
Подробное описание
Cookies — это небольшие фрагменты информации, которые используются протоколами без состояния, такими как HTTP, для сохранения некоторой постоянной информации между запросами.
Cookie устанавливается удалённым сервером при ответе на запрос, и ожидается, что тот же cookie будет отправлен обратно при последующих запросах.
Cookie-контейнер — это объект, хранящий все cookies, установленные в предыдущих запросах. Веб-браузеры сохраняют свои cookie-контейнеры на диск, чтобы сохранять постоянные cookies между запусками приложения.
QNetworkCookieJar не реализует постоянное хранение: он хранит cookies только в памяти. После удаления объекта QNetworkCookieJar все cookies, которые он содержал, также будут удалены. Если вы хотите сохранить cookies, вы должны наследоваться от этого класса и реализовать сохранение на диск в вашем собственном формате хранения.
Этот класс реализует только основные рекомендации по безопасности, указанные в спецификациях cookie, и не реализует никакой политики принятия cookie (принимает все cookie, установленные любыми запросами). Чтобы переопределить эти правила, вы должны переопределить виртуальные функции cookiesForUrl() и setCookiesFromUrl(). Они вызываются QNetworkReply и QNetworkAccessManager, когда они обнаруживают новые cookie и когда им нужны cookie.
См. также QNetworkCookie, QNetworkAccessManager, QNetworkReply, QNetworkRequest и QNetworkAccessManager::setCookieJar().
Документация по функциям-членам
QNetworkCookieJar::QNetworkCookieJar(QObject *parent = nullptr)
Создаёт объект QNetworkCookieJar и устанавливает родительский объект в parent.
Cookie-контейнер инициализируется пустым.
[virtual] QNetworkCookieJar::~QNetworkCookieJar()
Удаляет этот объект cookie-контейнера и удаляет все хранящиеся в нём cookie. Cookie не сохраняются на диск в реализации QNetworkCookieJar по умолчанию.
Если вам нужно сохранить cookies на диск, вы должны наследоваться от QNetworkCookieJar и сохранить cookies на диск самостоятельно.
[protected] QList<QNetworkCookie> QNetworkCookieJar::allCookies() const
Возвращает все cookie, хранящиеся в этом cookie-контейнере. Эта функция подходит для производных классов, чтобы сохранять cookie на диск, а также для реализации истечения срока действия cookie и других политик.
См. также setAllCookies() и cookiesForUrl().
[virtual] QList<QNetworkCookie> QNetworkCookieJar::cookiesForUrl(const QUrl &url) const
Возвращает cookie, которые должны быть добавлены при отправке запроса на url. Эта функция вызывается по умолчанию QNetworkAccessManager::createRequest(), которая добавляет cookie, возвращенные этой функцией, в отправляемый запрос.
Если найдено более одного cookie с одинаковым именем, но с различными путями, то возвращается тот, у которого путь длиннее, а затем тот, у которого путь короче. Другими словами, эта функция возвращает cookie, отсортированные по убыванию длины пути.
Класс QNetworkCookieJar по умолчанию реализует только очень простую политику безопасности (убеждается, что домен и путь cookie соответствуют ответу). Чтобы расширить политику безопасности своими алгоритмами, переопределите cookiesForUrl().
См. также setCookiesFromUrl() и QNetworkAccessManager::setCookieJar().
[virtual] bool QNetworkCookieJar::deleteCookie(const QNetworkCookie &cookie)
Удаляет из cookie-контейнера cookie, найденное с таким же идентификатором, как cookie.
Возвращает true если cookie был удален, в противном случае false.
Эта функция была представлена в Qt 5.0.
См. также QNetworkCookie::hasSameIdentifier().
[virtual] bool QNetworkCookieJar::insertCookie(const QNetworkCookie &cookie)
Добавляет cookie в этот cookie-контейнер.
Возвращает true если cookie была добавлена, в противном случае false.
Если cookie с таким же идентификатором уже существует в cookie-контейнере, она будет перезаписана.
Эта функция была представлена в Qt 5.0.
[protected] void QNetworkCookieJar::setAllCookies(const QList<QNetworkCookie> &cookieList)
Устанавливает внутренний список cookie, хранимых в этом cookie-контейнере, в cookieList. Эта функция подходит для производных классов, чтобы реализовать загрузку cookie из постоянного хранилища или собственные политики принятия cookie, переопределив setCookiesFromUrl().
См. также allCookies() и setCookiesFromUrl().
[virtual] bool QNetworkCookieJar::setCookiesFromUrl(const QList<QNetworkCookie> &cookieList, const QUrl &url)
Добавляет cookie из списка cookieList в этот cookie-контейнер. Перед вставкой cookie нормализуются.
Возвращает true если одно или несколько cookie установлены для url, в противном случае false.
Если cookie уже существует в cookie-контейнере, она будет перезаписана cookie из cookieList.
Класс QNetworkCookieJar по умолчанию реализует только очень простую политику безопасности (убеждается, что домен и путь cookie соответствуют ответу). Чтобы расширить политику безопасности своими алгоритмами, переопределите setCookiesFromUrl().
Кроме того, QNetworkCookieJar не имеет максимального размера cookie-контейнера. Переопределите эту функцию, чтобы отбрасывать более старые cookie, чтобы освободить место для новых.
См. также cookiesForUrl(), QNetworkAccessManager::setCookieJar() и QNetworkCookie::normalize().
[virtual] bool QNetworkCookieJar::updateCookie(const QNetworkCookie &cookie)
Если cookie с таким же идентификатором, как cookie, существует в этом cookie-контейнере, она будет обновлена. Эта функция использует insertCookie().
Возвращает true если cookie была обновлена, false, если в контейнере нет cookie, соответствующих идентификатору cookie.
Эта функция была добавлена в Qt 5.0.
См. также QNetworkCookie::hasSameIdentifier().
[virtual protected] bool QNetworkCookieJar::validateCookie(const QNetworkCookie &cookie, const QUrl &url) const
Возвращает true, если домен и путь cookie допустимы, в противном случае — false. Параметр url используется для определения, разрешен ли домен, указанный в cookie.
Эта функция была добавлена в Qt 5.0.
© The Qt Company Ltd
Licensed under the GNU Free Documentation License, Version 1.3.
https://doc.qt.io/qt-5.13/qnetworkcookiejar.html