QNetworkCookie Class

QNetworkCookie 类保存一个网络 cookie。更多

Header: #include <QNetworkCookie>
CMake: find_package(Qt6 REQUIRED COMPONENTS Network)
target_link_libraries(mytarget PRIVATE Qt6::Network)
qmake: QT += network

公共类型

enum RawForm { NameAndValueOnly, Full }
(since 6.1) enum class SameSite { Default, None, Lax, Strict }

公共函数

QNetworkCookie(const QByteArray &name = QByteArray(), const QByteArray &value = QByteArray())
QNetworkCookie(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
(since 6.1) 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)
(since 6.1) 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
QNetworkCookie &operator=(const QNetworkCookie &other)
bool operator==(const QNetworkCookie &other) const

静态公共成员

QList<QNetworkCookie> parseCookies(QByteArrayView cookieString)

详细说明

Cookie 是 HTTP 等无状态协议用来跨请求维护某些持久性信息的小段信息。

远程服务器在回复请求时会设置 Cookie,并希望在发送其他请求时也能发回相同的 Cookie。

QNetworkCookie 保存着从网络接收到的 cookie。Cookie 有一个名称和一个值,但这些名称和值对应用程序来说是不透明的(也就是说,其中存储的信息对应用程序没有任何意义)。Cookie 有一个相关的路径名和域,表示何时应再次向服务器发送 Cookie。

Cookie 还可以有一个过期日期,表明其有效性。如果没有过期日期,cookie 将被视为 "会话 cookie",并应在应用程序退出(或会话概念结束)时丢弃。

QNetworkCookie 提供了一种使用QNetworkCookie::parseCookies() 函数从 HTTP 标头格式解析 cookie 的方法。不过,当接收到QNetworkReply 时,Cookie 已被解析。

该类实现了Netscape 最初的 cookie 规范所描述的 cookie,该规范与RFC 2109规范有点类似,另外还有"HttpOnly "扩展。该类不支持最新的RFC 2965规范(使用 Set-Cookie2 标头)。

另请参阅 QNetworkCookieJar,QNetworkRequest, 和QNetworkReply

成员类型文档

enum QNetworkCookie::RawForm

该枚举与toRawForm() 函数一起使用,用于声明应返回哪种形式的 cookie。

常量说明
QNetworkCookie::NameAndValueOnly0使toRawForm() 只返回 cookie 的 "NAME=VALUE "部分,以适合在客户端请求的 "Cookie: "标头中发送回服务器。多个 cookie 在 "Cookie: "标头字段中用分号分隔。
QNetworkCookie::Full1makestoRawForm() 返回完整的 cookie 内容,适合在服务器的 "Set-Cookie: "标头中发送给客户端。

请注意,只有完整形式的 cookie 才能被解析回其原始内容。

另请参阅 toRawForm() 和parseCookies()。

[since 6.1] enum class QNetworkCookie::SameSite

常数说明
QNetworkCookie::SameSite::Default0未设置 SameSite。浏览器可将其解释为 "无 "或 "宽松"。
QNetworkCookie::SameSite::None1可以在所有情况下发送 Cookie。这曾是默认值,但最近的浏览器将 "Lax "设为默认值,现在则要求 cookie 既要安全又要设置 SameSite=None。
QNetworkCookie::SameSite::Lax2第三方网站发起的第一方请求和 GET 请求都会发送 Cookie。这是现代浏览器的默认设置(自 2020 年年中)。
QNetworkCookie::SameSite::Strict3Cookie 只在第一方上下文中发送。

此枚举在 Qt 6.1 中引入。

另请参阅 setSameSitePolicy() 和sameSitePolicy()。

成员函数文档

[explicit] QNetworkCookie::QNetworkCookie(const QByteArray &name = QByteArray(), const QByteArray &value = QByteArray())

创建一个新的 QNetworkCookie 对象,将 cookie 名称初始化为name ,其值初始化为value

cookie 只有在有名称时才有效。不过,其值对应用程序来说是不透明的,如果为空,则可能对远程服务器有意义。

QNetworkCookie::QNetworkCookie(const QNetworkCookie &other)

复制other 中的内容,创建一个新的 QNetworkCookie 对象。

[noexcept] QNetworkCookie::~QNetworkCookie()

销毁QNetworkCookie 对象。

QString QNetworkCookie::domain() const

返回此 cookie 关联的域。这与 cookie 字符串中的 "域 "字段相对应。

请注意,此处的域可能以点开头,这不是有效的主机名。不过,这意味着此 cookie 会匹配所有以该域名结尾的主机名。

另请参见 setDomain()。

QDateTime QNetworkCookie::expirationDate() const

返回此 cookie 的过期日期。如果此 cookie 是会话 cookie,则返回的QDateTime 将无效。如果日期已过,则表示此 cookie 已经过期,不应再发送到远程服务器。

过期日期与 cookie 字符串中 "expires "条目的参数一致。

另请参阅 isSessionCookie() 和setExpirationDate()。

bool QNetworkCookie::hasSameIdentifier(const QNetworkCookie &other) const

如果此 cookie 的标识符元组与other 相同,则返回true 。标识符元组由名称、域和路径组成。

另请参阅 operator==().

bool QNetworkCookie::isHttpOnly() const

如果该 cookie 启用了 "仅支持 Http "标志,则返回true

仅通过网络请求和回复(即 HTTP 协议)设置和检索 "HttpOnly "cookie。浏览器上运行的脚本无法访问它。

另请参见 isSecure().

bool QNetworkCookie::isSecure() const

如果在 cookie 字符串中指定了 "安全 "选项,则返回true ,否则返回 false。

安全 cookie 可能包含私人信息,因此不应通过未加密连接发送。

另请参阅 setSecure().

bool QNetworkCookie::isSessionCookie() const

如果该 cookie 是会话 cookie,则返回true 。会话 cookie 是一种没有过期日期的 cookie,这意味着当应用程序的会话概念结束时(通常是在应用程序退出时),它应被丢弃。

另请参阅 expirationDate() 和setExpirationDate()。

QByteArray QNetworkCookie::name() const

返回 cookie 的名称。cookie 的唯一必填字段是其名称,没有名称的 cookie 将被视为无效。

另请参阅 setName() 和value()。

void QNetworkCookie::normalize(const QUrl &url)

如果 cookie 的路径和域之前为空,则该函数会将它们规范化。url 参数用于确定正确的域和路径。

[static] QList<QNetworkCookie> QNetworkCookie::parseCookies(QByteArrayView cookieString)

解析从服务器响应的 "Set-Cookie: "标头中接收到的 cookie 字符串cookieString 。如果解析错误,该函数将返回一个空列表。

由于 HTTP 标头可以同时设置多个 cookie,因此该函数将返回QList<QNetworkCookie>,每个 cookie 都将被解析。

注意: 在 6.7 之前的 Qt XML 版本中,此函数只接受QByteArray

另请参阅 toRawForm() 。

QString QNetworkCookie::path() const

返回与此 cookie 相关的路径。这与 cookie 字符串的 "路径 "字段相对应。

另请参见 setPath()。

[since 6.1] QNetworkCookie::SameSite QNetworkCookie::sameSitePolicy() const

如果 cookie 字符串中指定了 "SameSite"选项,则返回 "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)

将此 cookie 的 "HttpOnly "标记设置为enable

另请参阅 isHttpOnly().

void QNetworkCookie::setName(const QByteArray &cookieName)

将此 cookie 的名称设置为cookieName 。请注意,将 cookie 名称设置为空QByteArray 会导致 cookie 无效。

另请参阅 name() 和value()。

void QNetworkCookie::setPath(const QString &path)

将与此 cookie 相关的路径设置为path

另请参阅 path().

[since 6.1] void QNetworkCookie::setSameSitePolicy(QNetworkCookie::SameSite sameSite)

将此 cookie 的 "SameSite" 选项设置为sameSite

此函数在 Qt 6.1 中引入。

另请参阅 sameSitePolicy().

void QNetworkCookie::setSecure(bool enable)

将此 cookie 的安全标记设置为enable

安全 cookie 可能包含私人信息,因此不应通过未加密连接发送。

另请参阅 isSecure().

void QNetworkCookie::setValue(const QByteArray &value)

将此 cookie 的值设置为value

另请参阅 value() 和name()。

[noexcept] void QNetworkCookie::swap(QNetworkCookie &other)

将此 cookie 与other 互换。该操作速度非常快,从未出现过故障。

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

如果此 cookie 不等于other ,则返回true

另请参阅 operator==() 。

QNetworkCookie &QNetworkCookie::operator=(const QNetworkCookie &other)

QNetworkCookie 对象other 的内容复制到此对象。

bool QNetworkCookie::operator==(const QNetworkCookie &other) const

如果此 cookie 等于other ,则返回true 。只有 cookie 的所有字段都相同时,此函数才返回true

不过,在某些情况下,两个同名的 cookie 可以被视为相等。

另请参阅 operator!=() 和hasSameIdentifier()。

© 2025 The Qt Company Ltd. Documentation contributions included herein are the copyrights of their respective owners. The documentation provided herein is licensed under the terms of the GNU Free Documentation License version 1.3 as published by the Free Software Foundation. Qt and respective logos are trademarks of The Qt Company Ltd. in Finland and/or other countries worldwide. All other trademarks are property of their respective owners.