Класс QNetworkCookie
Класс QNetworkCookie хранит один сетевой cookie. Подробнее...
| Заголовок: | #include <QNetworkCookie> |
| CMake: | find_package(Qt6 COMPONENTS Network REQUIRED) target_link_libraries(mytarget PRIVATE Qt6::Network) |
| qmake: | QT += network |
Типы публичного доступа
| Перечисление | RawForm { NameAndValueOnly, Full } |
| Перечисление | SameSite { Default, None, Lax, Strict } |
Публичные функции
| QNetworkCookie(const QNetworkCookie &other) | |
| QNetworkCookie(const QByteArray &name = QByteArray(), const QByteArray &value = QByteArray()) | |
| QNetworkCookie & | operator=(const QNetworkCookie &other) |
| ~QNetworkCookie() | |
| QString | domain() const |
| QDateTime | expirationDate() const |
| bool | hasSameIdentifier(const QNetworkCookie &other) const |
| bool | isHttpOnly() const |
| bool | isSecure() const |
| bool | isSessionCookie() const |
| QByteArray | name() const |
| void | normalize(const QUrl &url) |
| QString | path() const |
| QNetworkCookie::SameSite | sameSitePolicy() const |
| void | setDomain(const QString &domain) |
| void | setExpirationDate(const QDateTime &date) |
| void | setHttpOnly(bool enable) |
| void | setName(const QByteArray &cookieName) |
| void | setPath(const QString &path) |
| void | setSameSitePolicy(QNetworkCookie::SameSite sameSite) |
| void | setSecure(bool enable) |
| void | setValue(const QByteArray &value) |
| void | swap(QNetworkCookie &other) |
| QByteArray | toRawForm(QNetworkCookie::RawForm form = Full) const |
| QByteArray | value() const |
| bool | operator!=(const QNetworkCookie &other) const |
| bool | operator==(const QNetworkCookie &other) const |
Статические публичные члены
| QList<QNetworkCookie> | parseCookies(const QByteArray &cookieString) |
Подробное описание
Cookies — небольшие фрагменты информации, которые используют бессостоятельные протоколы, такие как HTTP, для сохранения некоторой постоянной информации между запросами.
Cookie устанавливается удалённым сервером, когда он отвечает на запрос, и ожидает, что тот же cookie будет отправлен обратно при последующих запросах.
Класс QNetworkCookie хранит один такой cookie, полученный из сети. Cookie имеет имя и значение, но они непрозрачны для приложения (то есть информация, хранящаяся в них, не имеет смысла для приложения). Cookie имеет связанное имя пути и домен, которые указывают, когда cookie следует отправить обратно на сервер.
Cookie также может иметь дату истечения срока действия, указывающую его действительность. Если дата истечения срока действия отсутствует, cookie считается «cookie сессии» и должен быть удалён при выходе приложения (или когда заканчивается концепция сессии приложения).
Класс QNetworkCookie предоставляет способ анализа cookie из формата HTTP-заголовка с помощью функции QNetworkCookie::parseCookies(). Однако, когда cookie получен в QNetworkReply, он уже проанализирован.
Этот класс реализует cookie, как описано в первоначальной спецификации cookie Netscape, которая несколько похожа на спецификацию RFC 2109, плюс расширение «HttpOnly». Более поздняя спецификация RFC 2965 (которая использует заголовок Set-Cookie2) не поддерживается.
См. также QNetworkCookieJar, QNetworkRequest и QNetworkReply.
Документация по типам членов
Перечисление QNetworkCookie::RawForm
Это перечисление используется с функцией toRawForm() для объявления, какая форма cookie должна быть возвращена.
| Постоянная | Значение | Описание |
|---|---|---|
QNetworkCookie::NameAndValueOnly |
0 |
заставляет toRawForm() возвращать только часть «NAME=VALUE» cookie, как это подходит для отправки обратно на сервер в заголовке «Cookie:» запроса клиента. Несколько cookies разделены точкой с запятой в поле заголовка «Cookie:». |
QNetworkCookie::Full |
1 |
заставляет toRawForm() возвращать полное содержимое cookie, как это подходит для отправки клиенту в заголовке «Set-Cookie:» сервера. |
Обратите внимание, что только полная форма cookie может быть обработана обратно в её исходное содержимое.
См. также toRawForm() и parseCookies().
[since 6.1] Перечисление QNetworkCookie::SameSite
| Постоянная | Значение | Описание |
|---|---|---|
QNetworkCookie::SameSite::Default |
0 |
SameSite не задан. Браузер может интерпретировать его как None или Lax. |
QNetworkCookie::SameSite::None |
1 |
Cookies могут быть отправлены во всех контекстах. Раньше это было значением по умолчанию, но в современных браузерах значением по умолчанию стал Lax, и теперь требуется, чтобы cookie был и безопасным, и устанавливал SameSite=None. |
QNetworkCookie::SameSite::Lax |
2 |
Cookies отправляются в запросах к первой стороне и GET-запросах, инициированных сторонним сайтом. Это значение по умолчанию в современных браузерах (с середины 2020 года). |
QNetworkCookie::SameSite::Strict |
3 |
Cookies будут отправлены только в контексте первой стороны. |
Это перечисление было добавлено или изменено в Qt 6.1.
См. также setSameSitePolicy() и sameSitePolicy().
Документация по функциям членов
QNetworkCookie::QNetworkCookie(const QNetworkCookie &other)
Создаёт новый объект QNetworkCookie, копируя содержимое other.
QNetworkCookie::QNetworkCookie(const QByteArray &name = QByteArray(), const QByteArray &value = QByteArray())
Создаёт новый объект QNetworkCookie, инициализируя имя cookie значением name, а значение — value.
Cookie считается валидным только если у него есть имя. Однако значение является неявным для приложения, и пустое значение может иметь определённый смысл для удалённого сервера.
QNetworkCookie &QNetworkCookie::operator=(const QNetworkCookie &other)
Копирует содержимое объекта QNetworkCookie other в текущий объект.
QNetworkCookie::~QNetworkCookie()
Удаляет этот объект QNetworkCookie.
QString QNetworkCookie::domain() const
Возвращает домен, ассоциированный с этим cookie. Соответствует полю «domain» в строке cookie.
Обратите внимание, что домен может начинаться с точки, что не является допустимым именем хоста. Однако это означает, что данный cookie соответствует всем именам хостов, заканчивающимся этим доменным именем.
См. также setDomain().
QDateTime QNetworkCookie::expirationDate() const
Возвращает дату истечения срока действия этого cookie. Если этот cookie является cookie сессии, возвращаемое значение QDateTime не будет валидным. Если дата в прошлом, этот cookie уже просрочен и не должен быть повторно отправлен на удалённый сервер.
Дата истечения срока действия соответствует параметрам записи «expires» в строке cookie.
См. также isSessionCookie() и setExpirationDate().
bool QNetworkCookie::hasSameIdentifier(const QNetworkCookie &other) const
Возвращает true , если у данного cookie есть та же кортеж идентификатора, что и у other. Кортеж идентификатора состоит из имени, домена и пути.
См. также operator==().
bool QNetworkCookie::isHttpOnly() const
Возвращает true , если для данного cookie включён флаг «HttpOnly».
Cookie с флагом «HttpOnly» может быть установлен и получен только сетевыми запросами и ответами; т. е., протоколом HTTP. Он недоступен для скриптов, выполняемых в браузерах.
См. также isSecure().
bool QNetworkCookie::isSecure() const
Возвращает true , если в строке cookie был указан параметр «secure», иначе false.
Защищённые cookie могут содержать конфиденциальную информацию и не должны отправляться по незащищённым соединениям.
См. также setSecure().
bool QNetworkCookie::isSessionCookie() const
Возвращает true , если этот cookie является cookie сессии. Cookie сессии — это cookie, у которого нет даты истечения срока действия, что означает, что он должен быть удалён, когда завершается понятие сессии приложения (обычно при выходе из приложения).
См. также expirationDate() и setExpirationDate().
QByteArray QNetworkCookie::name() const
Возвращает имя этого cookie. Единственным обязательным полем cookie является его имя, без которого он не считается валидным.
См. также setName() и value().
[since 5.0] void QNetworkCookie::normalize(const QUrl &url)
Эта функция нормализует путь и домен cookie, если они были ранее пустыми. Параметр url используется для определения правильного домена и пути.
Эта функция была добавлена в Qt 5.0.
[static] QList<QNetworkCookie> QNetworkCookie::parseCookies(const QByteArray &cookieString)
Парсит строку cookie cookieString, полученную от сервера в заголовке «Set-Cookie:». При ошибке парсинга возвращается пустой список.
Так как заголовок HTTP может устанавливать более одного cookie одновременно, эта функция возвращает QList<QNetworkCookie>, по одному для каждого пропарсенного cookie.
См. также toRawForm().
QString QNetworkCookie::path() const
Возвращает путь, связанный с этим cookie. Соответствует полю «path» в строке cookie.
См. также setPath().
[since 6.1] QNetworkCookie::SameSite QNetworkCookie::sameSitePolicy() const
Возвращает параметр «SameSite», если он указан в строке cookie, SameSite::Default если отсутствует.
Эта функция была добавлена в Qt 6.1.
См. также setSameSitePolicy().
void QNetworkCookie::setDomain(const QString &domain)
Устанавливает домен, связанный с этим cookie, равным domain.
См. также domain().
void QNetworkCookie::setExpirationDate(const QDateTime &date)
Устанавливает дату истечения срока действия данного cookie равной date. Установка невалидной даты истечения срока действия сделает данный cookie cookie сессии.
См. также isSessionCookie() и expirationDate().
void QNetworkCookie::setHttpOnly(bool enable)
Устанавливает флаг «HttpOnly» данного cookie в значение enable.
См. также isHttpOnly().
void QNetworkCookie::setName(const QByteArray &cookieName)
Устанавливает имя данного cookie равным cookieName. Установка пустого QByteArray в качестве имени сделает cookie невалидным.
void QNetworkCookie::setPath(const QString &path)
Устанавливает путь, связанный с данным cookie, равным path.
См. также path().
[since 6.1] void QNetworkCookie::setSameSitePolicy(QNetworkCookie::SameSite sameSite)
Устанавливает параметр «SameSite» данного cookie в значение sameSite.
Эта функция была добавлена в Qt 6.1.
См. также sameSitePolicy().
void QNetworkCookie::setSecure(bool enable)
Устанавливает флаг безопасности данного cookie в значение enable.
Защищённые cookie могут содержать конфиденциальную информацию и не должны отправляться по незащищённым соединениям.
См. также isSecure().
void QNetworkCookie::setValue(const QByteArray &value)
Устанавливает значение данного cookie в значение value.
[since 5.0] void QNetworkCookie::swap(QNetworkCookie &other)
Меняет местами данный cookie и other. Эта функция очень быстрая и никогда не приводит к ошибке.
Эта функция была добавлена в Qt 5.0.
QByteArray QNetworkCookie::toRawForm(QNetworkCookie::RawForm form = Full) const
Возвращает сырое представление данного QNetworkCookie. Возвращаемый QByteArray подходит для заголовка HTTP, как в ответе сервера (заголовок Set-Cookie), так и в запросе клиента (заголовок Cookie). Можно выбрать один из двух форматов, используя form.
См. также parseCookies().
QByteArray QNetworkCookie::value() const
Возвращает значение этого cookie, как указано в строке cookie. Обратите внимание, что cookie всё ещё является валидным, если его значение пустое.
Значения пар имя-значение cookie считаются неявными для приложения: то есть их значения ничего не означают.
См. также setValue() и name().
bool QNetworkCookie::operator!=(const QNetworkCookie &other) const
Возвращает true если этот куки не равен other.
См. также operator==().
[since 5.0] bool QNetworkCookie::operator==(const QNetworkCookie &other) const
Возвращает true если этот куки равен other. Данная функция возвращает true только если все поля куки совпадают.
Однако в некоторых контекстах два куки с одинаковым именем могут считаться равными.
Данная функция была добавлена в Qt 5.0.
См. также operator!=() и hasSameIdentifier().
© The Qt Company Ltd
Licensed under the GNU Free Documentation License, Version 1.3.
https://doc.qt.io/qt-6.1/qnetworkcookie.html