QNetworkCookie类

QNetworkCookie类保存一个网络Cookie。 更多...

头文件 #include <QNetworkCookie>
CMakefind_package(Qt6 REQUIRED COMPONENTS Network)
target_link_libraries(mytarget PRIVATE Qt6::Network)
qmakeQT += network

公共类型

枚举RawForm { NameAndValueOnly, Full }
(自6.1起)枚举类SameSite { Default, None, Lax, Strict }

公共函数

QNetworkCookie(const QByteArray &name = QByteArray(), const QByteArray &value = QByteArray())
QNetworkCookie(const QNetworkCookie &other)
~QNetworkCookie()
QStringdomain() const
QDateTimeexpirationDate() const
boolhasSameIdentifier(const QNetworkCookie &other) const
boolisHttpOnly() const
boolisSecure() const
boolisSessionCookie() const
QByteArrayname() const
voidnormalize(const QUrl &url)
QStringpath() const
(自6.1起) QNetworkCookie::SameSitesameSitePolicy() const
voidsetDomain(const QString &domain)
voidsetExpirationDate(const QDateTime &date)
voidsetHttpOnly(bool enable)
voidsetName(const QByteArray &cookieName)
voidsetPath(const QString &path)
(自6.1起) voidsetSameSitePolicy(QNetworkCookie::SameSite sameSite)
voidsetSecure(bool enable)
voidsetValue(const QByteArray &value)
voidswap(QNetworkCookie &other)
QByteArraytoRawForm(QNetworkCookie::RawForm form = Full) const
QByteArrayvalue() const
booloperator!=(const QNetworkCookie &other) const
QNetworkCookie &operator=(const QNetworkCookie &other)
booloperator==(const QNetworkCookie &other) const

静态公共成员

QList<QNetworkCookie>parseCookies(QByteArrayView cookieString)

详细描述

Cookies是一些小的信息片段,无状态协议(如HTTP)使用它来在请求间维护一些持久信息。

当远程服务器对请求做出响应时,它会设置一个cookie,并且在发送进一步请求时希望接收到相同的cookie。

QNetworkCookie存储从网络接收的这样一个cookie。一个cookie有一个名称和一个值,但对于应用程序来说这些是透明的(也就是说,它们存储的信息对应用程序没有意义)。一个cookie有一个相关的路径名和域名,这指出了应当在何时再次将cookie发送到服务器。

cookie还可以有一个过期日期,指示其有效性。如果不存在过期日期,则cookie被视为“会话cookie”,当应用程序退出(或其会话概念结束时)应当被丢弃。

QNetworkCookie通过使用QNetworkCookie::parseCookies()函数提供了一个从HTTP头格式解析cookie的方法。然而,当在QNetworkReply中接收时,cookie已经解析完毕。

此类实现了Netscape最初提出的cookie规范,这与RFC 2109规范有些类似,外加"HttpOnly"扩展。较新的RFC 2965规范(该规范使用了Set-Cookie2头)不受支持。

另见QNetworkCookieJarQNetworkRequestQNetworkReply

成员类型文档

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::Default0SameSite没有被设置。浏览器可以将其解释为None或Lax。
QNetworkCookie::SameSite::None1cookie可以在所有上下文中发送。这曾是默认值,但最近浏览器将Lax作为默认值,并且现在将需要cookie既安全又设置SameSite=None。
QNetworkCookie::SameSite::Lax2cookie在第一方请求和由第三方网站发起的GET请求中发送。这是现代浏览器中的默认值(自2020年中以来)。
QNetworkCookie::SameSite::Strict3cookie仅在第一方上下文中发送。

此枚举在Qt 6.1中引入。

另见setSameSitePolicy()和sameSitePolicy

成员函数文档

[明确] 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,这意味着应在应用程序会话的概念结束时丢弃(通常,当应用程序退出时)。

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

QByteArray QNetworkCookie::name() const

返回此 Cookie 的名称。Cookie 的唯一必填字段是其名称,没有名称则不被视为有效。

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

void QNetworkCookie::normalize(const QUrl &url)

如果之前为空,则此函数将 Normalize 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)

other 交换此 Cookie。此函数执行非常快,从来不会失败。

QByteArray QNetworkCookie::toRawForm(QNetworkCookie::RawForm form = Full) const

返回此QNetworkCookie的原始形式。此函数返回的QByteArray适用于 HTTP 标头,无论是服务器响应(Set-Cookie 标头)还是客户端请求(Cookie 标头)。您可以选择使用form的两种格式之一。

另请参阅parseCookies()。

QByteArray QNetworkCookie::value() const

返回此 Cookie 的值,即 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()。

© 2024 The Qt Company Ltd. 本文档中包含的贡献
是各自所有者的版权。本提供的文档受免费软件基金会
发布的GNU自由文档许可证
版本1.3
的条款所许可。Qt和相应的标志是
The Qt Company Ltd.在芬兰和/或世界其他国家的
商标。所有其他商标都是其各自所有者的财产。