QNetworkCookie类
QNetworkCookie类保存一个网络Cookie。 更多...
头文件 | #include <QNetworkCookie> |
CMake | find_package(Qt6 REQUIRED COMPONENTS Network) target_link_libraries(mytarget PRIVATE Qt6::Network) |
qmake | QT += network |
- 所有成员列表,包括继承的成员
- QNetworkCookie是隐式共享类的一部分。
公共类型
公共函数
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 |
(自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) |
(自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) |
详细描述
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头)不受支持。
另见QNetworkCookieJar、QNetworkRequest和QNetworkReply。
成员类型文档
enum QNetworkCookie::RawForm
此枚举与toRawForm()函数一起使用,以声明应返回cookie的哪种形式。
常量 | 值 | 描述 |
---|---|---|
QNetworkCookie::NameAndValueOnly | 0 | 使toRawForm()仅返回cookie的"NAME=VALUE"部分,这对于客户端请求的"Cookie:"头中发送给服务器是合适的。多个cookie在"Cookie:"头字段中以分号分隔。 |
QNetworkCookie::Full | 1 | 使toRawForm()返回完整的cookie内容,这对于服务器的"Set-Cookie:"头中发送给客户端是合适的。 |
请注意,只有cookie的完整形式才能被解析回原始内容。
另见toRawForm()和parseCookies。
[since 6.1]
enum class QNetworkCookie::SameSite
常量 | 值 | 描述 |
---|---|---|
QNetworkCookie::SameSite::Default | 0 | SameSite没有被设置。浏览器可以将其解释为None或Lax。 |
QNetworkCookie::SameSite::None | 1 | cookie可以在所有上下文中发送。这曾是默认值,但最近浏览器将Lax作为默认值,并且现在将需要cookie既安全又设置SameSite=None。 |
QNetworkCookie::SameSite::Lax | 2 | cookie在第一方请求和由第三方网站发起的GET请求中发送。这是现代浏览器中的默认值(自2020年中以来)。 |
QNetworkCookie::SameSite::Strict | 3 | cookie仅在第一方上下文中发送。 |
此枚举在Qt 6.1中引入。
成员函数文档
[明确]
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 的唯一必填字段是其名称,没有名称则不被视为有效。
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 无效。
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。
[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 名称-值对被视为对应用程序是透明的:即它们的值没有任何意义。
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.在芬兰和/或世界其他国家的
商标。所有其他商标都是其各自所有者的财产。