本页内容

QNetworkCookie Class

QNetworkCookie 类存储一个网络 Cookie。更多内容...

头文件: #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 的方法。然而,当 Cookie 作为QNetworkReply 接收时,它已经过解析。

本类实现了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::Full1使 `toRawForm()` 返回完整的 Cookie 内容,以便在服务器的“Set-Cookie:” 标头中发送给客户端。

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

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

[since 6.1] enum class QNetworkCookie::SameSite

常数值描述
QNetworkCookie::SameSite::Default0未设置 SameSite。浏览器可将其解释为 None 或 Lax。
QNetworkCookie::SameSite::None1Cookie 可在所有上下文中发送。这曾是默认行为,但近期浏览器已将 Lax 设为默认,现在要求 Cookie 既要安全,又要设置 SameSite=None。
QNetworkCookie::SameSite::Lax2Cookie 会在第一方请求以及由第三方网站发起的 GET 请求中发送。这是现代浏览器中的默认行为(自 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 字符串中的“domain”字段。

请注意,此处的域名可能以点号开头,这并非有效的主机名。但这意味着该 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 启用了“HttpOnly”标志,则返回true 。

具有“HttpOnly”属性的 Cookie 仅通过网络请求和响应(即 HTTP 协议)进行设置和读取;无法通过在浏览器上运行的脚本访问。

另请参阅 isSecure()。

bool QNetworkCookie::isSecure() const

如果 Cookie 字符串中指定了“secure”选项,则返回true ;否则返回false。

安全 Cookie 可能包含私人信息,不应通过未加密的连接重新发送。

另请参阅 setSecure()。

bool QNetworkCookie::isSessionCookie() const

如果该 Cookie 是会话 Cookie,则返回true 。会话 Cookie 是指没有过期日期的 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 对应一个元素。

注意:在 Qt 6.7 之前的版本中,此函数仅接受 `QByteArray ` 参数。

另请参阅 toRawForm()。

QString QNetworkCookie::path() const

返回与该 Cookie 关联的路径。这对应于 Cookie 字符串中的“path”字段。

另请参阅 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()。

© 2026 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.