Класс QNetworkCookie
Класс QNetworkCookie хранит один сетевой куки. Подробнее...
| Заголовок: | #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) |
Подробное описание
Куки — это небольшие фрагменты информации, которые используются бессостоятельными протоколами, такими как HTTP, для сохранения некоторой постоянной информации между запросами.
Куки устанавливаются удалённым сервером в ответ на запрос, и ожидается, что тот же куки будет отправлен обратно при последующих запросах.
QNetworkCookie хранит один такой куки, полученный из сети. Куки имеет имя и значение, но они являются непрозрачными для приложения (то есть, информация, хранящаяся в них, не имеет смысла для приложения). Куки связан с именем пути и доменом, которые указывают, когда куки должен быть снова отправлен серверу.
Куки также может иметь дату истечения срока действия, указывающую на его действительность. Если дата истечения срока действия отсутствует, куки считается «сессионным» и должен быть удалён при завершении работы приложения (или по окончании сессии).
QNetworkCookie предоставляет способ разбора куки из формата заголовка HTTP с помощью функции QNetworkCookie::parseCookies(). Однако, при получении из QNetworkReply, куки уже разборён.
Этот класс реализует куки, как описано в начальном спецификации куки Netscape, которая несколько похожа на спецификацию RFC 2109, плюс расширение "HttpOnly". Более поздняя спецификация RFC 2965 (которая использует заголовок Set-Cookie2) не поддерживается.
См. также QNetworkCookieJar, QNetworkRequest и QNetworkReply.
Документация типов членов
Перечисление QNetworkCookie::RawForm
Это перечисление используется с функцией toRawForm(), чтобы указать, какой вид куки требуется вернуть.
| Константа | Значение | Описание |
|---|---|---|
QNetworkCookie::NameAndValueOnly |
0 |
приводит к возвращению функцией toRawForm() только части "NAME=VALUE" куки, что подходит для отправки обратно на сервер в заголовке "Cookie:" запроса клиента. Несколько куки разделяются точкой с запятой в поле заголовка "Cookie:". |
QNetworkCookie::Full |
1 |
приводит к возвращению функцией toRawForm() полного содержимого куки, что подходит для отправки клиенту в заголовке "Set-Cookie:" сервера. |
Обратите внимание, что только полная форма куки может быть проанализирована обратно в исходное содержимое.
См. также toRawForm() и parseCookies().
[since 6.1] перечисление QNetworkCookie::SameSite
| Константа | Значение | Описание |
|---|---|---|
QNetworkCookie::SameSite::Default |
0 |
SameSite не задан. Браузер может интерпретировать его как None или Lax. |
QNetworkCookie::SameSite::None |
1 |
Куки могут быть отправлены во всех контекстах. Раньше это было значением по умолчанию, но сейчас браузеры используют Lax по умолчанию и теперь требуют, чтобы куки был и безопасным, и SameSite=None. |
QNetworkCookie::SameSite::Lax |
2 |
Куки отправляются в запросах к сайту первой стороны и в GET-запросах, инициированных сайтом третьей стороны. Это значение по умолчанию в современных браузерах (с середины 2020 года). |
QNetworkCookie::SameSite::Strict |
3 |
Куки будут отправляться только в контексте первой стороны. |
Это перечисление было добавлено или изменено в Qt 6.1.
См. также setSameSitePolicy() и sameSitePolicy().
Документация функций-членов
QNetworkCookie::QNetworkCookie(const QNetworkCookie &other)
Создаёт новый объект QNetworkCookie, копируя содержимое other.
QNetworkCookie::QNetworkCookie(const QByteArray &name = QByteArray(), const QByteArray &value = QByteArray())
Создаёт новый объект QNetworkCookie, инициализируя имя куки на name, а значение — на value.
Кука считается валидной только если у неё есть имя. Однако значение является нечитаемым для приложения, и пустое значение может иметь значение для удалённого сервера.
QNetworkCookie &QNetworkCookie::operator=(const QNetworkCookie &other)
Копирует содержимое объекта QNetworkCookie other в этот объект.
QNetworkCookie::~QNetworkCookie()
Уничтожает этот объект QNetworkCookie.
QString QNetworkCookie::domain() const
Возвращает домен, связанный с этой кукой. Это соответствует полю "domain" строки куки.
Обратите внимание, что домен здесь может начинаться с точки, что не является допустимым именем хоста. Однако это означает, что данная кука соответствует всем именам хостов, оканчивающимся на указанный домен.
См. также setDomain().
QDateTime QNetworkCookie::expirationDate() const
Возвращает дату истечения срока действия этой куки. Если данная кука — кука сессии, возвращаемое значение QDateTime будет недопустимым. Если дата истечения срока действия в прошлом, эта кука уже истекла и больше не должна отправляться на удалённый сервер.
Дата истечения срока действия соответствует параметрам записи "expires" в строке куки.
См. также isSessionCookie() и setExpirationDate().
bool QNetworkCookie::hasSameIdentifier(const QNetworkCookie &other) const
Возвращает true , если у этой куки такая же кортеж идентификатора, как и у other. Кортеж идентификатора состоит из имени, домена и пути.
См. также operator==().
bool QNetworkCookie::isHttpOnly() const
Возвращает true , если для этой куки включён флаг "HttpOnly".
Кука "HttpOnly" устанавливается и извлекается только запросами и ответами сети; т.е., протоколом HTTP. Она недоступна для скриптов, выполняемых в браузерах.
См. также isSecure().
bool QNetworkCookie::isSecure() const
Возвращает true , если в строке куки был указан параметр "secure", в противном случае — false.
Безопасные куки могут содержать конфиденциальную информацию и не должны повторно отправляться по незащищённым соединениям.
См. также setSecure().
bool QNetworkCookie::isSessionCookie() const
Возвращает true , если эта кука — кука сессии. Кука сессии — это кука без даты истечения срока действия, что означает, что она должна быть удалена, когда сессия приложения завершена (обычно, при выходе из приложения).
См. также expirationDate() и setExpirationDate().
QByteArray QNetworkCookie::name() const
Возвращает имя этой куки. Единственным обязательным полем куки является её имя, без которого она не считается валидной.
См. также setName() и value().
[since 5.0] void QNetworkCookie::normalize(const QUrl &url)
Эта функция нормализует путь и домен куки, если они были ранее пусты. Параметр url используется для определения правильного домена и пути.
Эта функция была введена в Qt 5.0.
[static] QList<QNetworkCookie> QNetworkCookie::parseCookies(const QByteArray &cookieString)
Парсит строку куки cookieString, полученную от сервера в заголовке "Set-Cookie:". При ошибке парсинга функция возвращает пустой список.
Так как заголовок HTTP может установить более одной куки одновременно, эта функция возвращает QList<QNetworkCookie>, по одной куке для каждой успешно разобранной.
См. также toRawForm().
QString QNetworkCookie::path() const
Возвращает путь, связанный с этой кукой. Это соответствует полю "path" строки куки.
См. также setPath().
[since 6.1] QNetworkCookie::SameSite QNetworkCookie::sameSitePolicy() const
Возвращает опцию "SameSite", если она указана в строке куки, SameSite::Default если её нет.
Эта функция была введена в Qt 6.1.
См. также setSameSitePolicy().
void QNetworkCookie::setDomain(const QString &domain)
Устанавливает домен, связанный с этой кукой, на domain.
См. также domain().
void QNetworkCookie::setExpirationDate(const QDateTime &date)
Устанавливает дату истечения срока действия этой куки на date. Установка некорректной даты истечения срока действия этой куки означает, что это кука сессии.
См. также isSessionCookie() и expirationDate().
void QNetworkCookie::setHttpOnly(bool enable)
Устанавливает флаг "HttpOnly" этой куки на enable.
См. также isHttpOnly().
void QNetworkCookie::setName(const QByteArray &cookieName)
Устанавливает имя этой куки на cookieName. Обратите внимание, что установка имени куки на пустой QByteArray сделает эту куку недействительной.
void QNetworkCookie::setPath(const QString &path)
Устанавливает путь, связанный с этой кукой, на path.
См. также path().
[since 6.1] void QNetworkCookie::setSameSitePolicy(QNetworkCookie::SameSite sameSite)
Устанавливает опцию "SameSite" этой куки на sameSite.
Эта функция была введена в Qt 6.1.
См. также sameSitePolicy().
void QNetworkCookie::setSecure(bool enable)
Устанавливает флаг безопасности этой куки на enable.
Безопасные куки могут содержать конфиденциальную информацию и не должны повторно отправляться по незащищённым соединениям.
См. также isSecure().
void QNetworkCookie::setValue(const QByteArray &value)
Устанавливает значение этой куки на value.
[since 5.0] void QNetworkCookie::swap(QNetworkCookie &other)
Меняет местами эту куку с other. Эта функция очень быстрая и никогда не терпит неудачу.
Эта функция была введена в Qt 5.0.
QByteArray QNetworkCookie::toRawForm(QNetworkCookie::RawForm form = Full) const
Возвращает исходную форму этой куки QNetworkCookie. Возвращаемый QByteArray подходит для заголовка HTTP, как в ответе сервера (заголовок Set-Cookie), так и в запросе клиента (заголовок Cookie). Вы можете выбрать один из двух форматов, используя form.
См. также parseCookies().
QByteArray QNetworkCookie::value() const
Возвращает значение этой куки, как указано в строке куки. Обратите внимание, что кука всё ещё валидна, если её значение пустое.
Пара имени-значения куки считаются нечитаемыми для приложения: т.е. их значения не имеют какого-либо смысла.
См. также 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.2/qnetworkcookie.html