Класс QNetworkCookieJar
Класс QNetworkCookieJar реализует простой контейнер (хранилище) для объектов QNetworkCookie. Подробнее...
| Заголовок: | #include <QNetworkCookieJar> |
| CMake: | find_package(Qt6 COMPONENTS Network REQUIRED) target_link_libraries(mytarget PRIVATE Qt6::Network) |
| qmake: | QT += network |
| Наследует: | QObject |
Открытые функции
| 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 |
Подробное описание
Куки — это небольшие фрагменты информации, которые используют бессостоятельные протоколы, такие как HTTP, для сохранения некоторой постоянной информации между запросами.
Куки устанавливаются удаленным сервером в ответ на запрос, и ожидается, что тот же куки будет отправлен обратно при последующих запросах.
Контейнер куки — это объект, который хранит все куки, установленные в предыдущих запросах. Веб-браузеры сохраняют свои контейнеры куки на диске, чтобы сохранить постоянные куки между запусками приложения.
QNetworkCookieJar не реализует постоянное хранение: он сохраняет куки только в памяти. После удаления объекта QNetworkCookieJar все сохраненные в нем куки будут удалены. Если вам необходимо сохранить куки, вы должны создать производный класс от этого класса и реализовать сохранение на диск в собственном формате хранения.
Этот класс реализует только основные рекомендации по безопасности, заданные спецификациями куки, и не реализует никакой политики принятия куки (он принимает все куки, установленные любыми запросами). Чтобы переопределить эти правила, необходимо переопределить виртуальные функции cookiesForUrl() и setCookiesFromUrl(). Они вызываются QNetworkReply и QNetworkAccessManager, когда они обнаруживают новые куки и когда им требуются куки.
См. также QNetworkCookie, QNetworkAccessManager, QNetworkReply, QNetworkRequest и QNetworkAccessManager::setCookieJar().
Документация по функциям-членам
QNetworkCookieJar::QNetworkCookieJar(QObject *parent = nullptr)
Создает объект QNetworkCookieJar и задает родительский объект parent.
Контейнер куки инициализируется как пустой.
[virtual] QNetworkCookieJar::~QNetworkCookieJar()
Удаляет этот объект контейнера куки и отбрасывает все хранящиеся в нем куки. Куки не сохраняются на диск в стандартной реализации QNetworkCookieJar.
Если вам необходимо сохранить куки на диск, вы должны создать производный класс от QNetworkCookieJar и сохранить куки на диск самостоятельно.
[protected] QList<QNetworkCookie> QNetworkCookieJar::allCookies() const
Возвращает все куки, хранящиеся в этом контейнере куки. Эта функция подходит для производных классов для сохранения куки на диск, а также для реализации истечения срока действия куки и других политик.
См. также setAllCookies() и cookiesForUrl().
[virtual] QList<QNetworkCookie> QNetworkCookieJar::cookiesForUrl(const QUrl &url) const
Возвращает куки, которые должны быть добавлены при отправке запроса на url. Эта функция вызывается по умолчанию QNetworkAccessManager::createRequest(), которая добавляет куки, возвращаемые этой функцией, в отправляемый запрос.
Если найдено более одного куки с одинаковым именем, но разными путями, то возвращается куки с более длинным путем перед куки с более коротким путем. Другими словами, эта функция возвращает куки, отсортированные по убыванию длины пути.
Стандартный класс QNetworkCookieJar реализует только очень простую политику безопасности (он проверяет, что домен и путь куки совпадают с ответом). Чтобы улучшить политику безопасности с помощью собственных алгоритмов, переопределите cookiesForUrl().
См. также setCookiesFromUrl() и QNetworkAccessManager::setCookieJar().
[virtual, since 5.0] bool QNetworkCookieJar::deleteCookie(const QNetworkCookie &cookie)
Удаляет из контейнера куки куки с тем же идентификатором, что и cookie.
Возвращает true если куки был удален, в противном случае false.
Эта функция была добавлена в Qt 5.0.
См. также QNetworkCookie::hasSameIdentifier().
[virtual, since 5.0] bool QNetworkCookieJar::insertCookie(const QNetworkCookie &cookie)
Добавляет cookie в этот контейнер куки.
Возвращает true если cookie был добавлен, в противном случае false.
Если в контейнере куки уже существует куки с тем же идентификатором, он будет перезаписан.
Эта функция была добавлена в Qt 5.0.
[protected] void QNetworkCookieJar::setAllCookies(const QList<QNetworkCookie> &cookieList)
Устанавливает внутренний список куки, хранимых этим контейнером куки, равным cookieList. Эта функция подходит для производных классов, чтобы реализовать загрузку куки из постоянного хранилища или собственные политики принятия куки, переопределяя setCookiesFromUrl().
См. также allCookies() и setCookiesFromUrl().
[virtual] bool QNetworkCookieJar::setCookiesFromUrl(const QList<QNetworkCookie> &cookieList, const QUrl &url)
Добавляет куки из списка cookieList в этот контейнер куки. Перед вставкой куки нормализуются.
Возвращает true если один или несколько куки установлены для url, в противном случае false.
Если куки уже существует в контейнере куки, он будет перезаписан куками из cookieList.
Стандартный класс QNetworkCookieJar реализует только очень простую политику безопасности (он проверяет, что домен и путь куки совпадают с ответом). Чтобы улучшить политику безопасности с помощью собственных алгоритмов, переопределите setCookiesFromUrl().
Кроме того, у QNetworkCookieJar нет максимального размера контейнера куки. Переопределите эту функцию, чтобы отбрасывать старые куки, чтобы освободить место для новых.
См. также cookiesForUrl(), QNetworkAccessManager::setCookieJar() и QNetworkCookie::normalize().
[virtual, since 5.0] bool QNetworkCookieJar::updateCookie(const QNetworkCookie &cookie)
Если в этом контейнере куки существует куки с тем же идентификатором, что и cookie, он будет обновлен. Эта функция использует insertCookie().
Возвращает true если cookie был обновлен, false, если в контейнере нет куки, соответствующего идентификатору cookie.
Эта функция была добавлена в Qt 5.0.
См. также QNetworkCookie::hasSameIdentifier().
[virtual protected, since 5.0] 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-6.1/qnetworkcookiejar.html