QNetworkCookieJar Class
QNetworkCookieJar 类实现了一个由QNetworkCookie 对象组成的简单 Cookie 存储器。更多内容...
| 头文件: | #include <QNetworkCookieJar> |
| CMake: | find_package(Qt6 REQUIRED COMPONENTS Network) target_link_libraries(mytarget PRIVATE Qt6::Network) |
| qmake: | QT += network |
| 继承自: | QObject |
公共函数
| QNetworkCookieJar(QObject *parent = nullptr) | |
| virtual | ~QNetworkCookieJar() |
| virtual QList<QNetworkCookie> | cookiesForUrl(const QUrl &url) const |
| virtual bool | deleteCookie(const QNetworkCookie &cookie) |
| virtual bool | insertCookie(const QNetworkCookie &cookie) |
| virtual bool | setCookiesFromUrl(const QList<QNetworkCookie> &cookieList, const QUrl &url) |
| virtual bool | updateCookie(const QNetworkCookie &cookie) |
受保护函数
| QList<QNetworkCookie> | allCookies() const |
| void | setAllCookies(const QList<QNetworkCookie> &cookieList) |
| virtual bool | validateCookie(const QNetworkCookie &cookie, const QUrl &url) const |
详细说明
Cookie 是 HTTP 等无状态协议用于在不同请求之间保持某些持久信息的小段信息。
Cookie 由远程服务器在响应请求时设置,并期望在发送后续请求时收到相同的 Cookie。
Cookie 存储器是一个对象,用于保存之前请求中设置的所有 Cookie。Web 浏览器将 Cookie 存储器保存到磁盘上,以便在应用程序的多次调用中保留永久性 Cookie。
QNetworkCookieJar 并未实现永久存储:它仅将 Cookie 保存在内存中。一旦 QNetworkCookieJar 对象被销毁,其所包含的所有 Cookie 也将被丢弃。若需保存 Cookie,应继承此类,并按自己的存储格式实现将 Cookie 保存到磁盘的功能。
本类仅实现了 Cookie 规范推荐的基本安全措施,并未实现任何 Cookie 接受策略(它会接受任何请求设置的所有 Cookie)。若要覆盖这些规则,您应重写cookiesForUrl() 和setCookiesFromUrl() 这两个虚函数。当QNetworkReply 和QNetworkAccessManager 检测到新 Cookie 或需要使用 Cookie 时,会调用这些函数。
另请参阅 QNetworkCookie 、QNetworkAccessManager 、QNetworkReply 、QNetworkRequest 以及QNetworkAccessManager::setCookieJar()。
成员函数文档
[explicit] QNetworkCookieJar::QNetworkCookieJar(QObject *parent = nullptr)
创建一个 QNetworkCookieJar 对象,并将父对象设置为parent 。
该 Cookie 存储器初始化为空。
[virtual noexcept] QNetworkCookieJar::~QNetworkCookieJar()
销毁此 Cookie 容器对象,并丢弃其中存储的所有 Cookie。在 `QNetworkCookieJar ` 的默认实现中,Cookie 不会保存到磁盘上。
若需将 Cookie 保存到磁盘,则必须继承自 `QNetworkCookieJar ` 类,并自行将 Cookie 保存到磁盘。
[protected] QList<QNetworkCookie> QNetworkCookieJar::allCookies() const
返回存储在此 Cookie 存储器中的所有 Cookie。该函数适用于派生类将 Cookie 保存到磁盘,以及实现 Cookie 过期和其他策略。
另请参阅 setAllCookies() 和cookiesForUrl()。
[virtual] QList<QNetworkCookie> QNetworkCookieJar::cookiesForUrl(const QUrl &url) const
返回在向url 发送请求时需添加的 Cookie。该函数由默认的QNetworkAccessManager::createRequest() 调用,后者会将该函数返回的 Cookie 添加到即将发送的请求中。
如果发现多个同名但路径不同的 Cookie,则路径较长的会优先于路径较短的返回。换言之,该函数会按路径长度从大到小对 Cookie 进行排序后返回。
默认的QNetworkCookieJar 类仅实现了非常基础的安全策略(它确保 Cookie 的域名和路径与响应中的相匹配)。若要通过自定义算法增强安全策略,请重写 cookiesForUrl() 方法。
另请参阅 setCookiesFromUrl() 和QNetworkAccessManager::setCookieJar()。
[virtual] bool QNetworkCookieJar::deleteCookie(const QNetworkCookie &cookie)
从Cookie存储中删除与cookie 具有相同标识符的Cookie。
如果删除了该 Cookie,则返回true ;否则返回 false。
另请参阅 QNetworkCookie::hasSameIdentifier()。
[virtual] bool QNetworkCookieJar::insertCookie(const QNetworkCookie &cookie)
将cookie 添加到此Cookie存储中。
如果已添加cookie ,则返回true ;否则返回 false。
如果 Cookie 存储中已存在具有相同标识符的 Cookie,则会将其覆盖。
[protected] void QNetworkCookieJar::setAllCookies(const QList<QNetworkCookie> &cookieList)
将此 Cookie 存储器中保存的 Cookie 内部列表设置为cookieList 。该函数适用于派生类,以便通过重写setCookiesFromUrl() 方法来实现从永久存储中加载 Cookie,或实现其自身的 Cookie 接受策略。
另请参阅 allCookies() 和setCookiesFromUrl()。
[virtual] bool QNetworkCookieJar::setCookiesFromUrl(const QList<QNetworkCookie> &cookieList, const QUrl &url)
将列表cookieList 中的 Cookie 添加到此 Cookie 存储中。在插入之前,Cookie 会经过规范化处理。
如果为url 设置了一个或多个 Cookie,则返回true ;否则返回 false。
如果 Cookie 存储池中已存在该 Cookie,则会被cookieList 中的 Cookie 覆盖。
默认的QNetworkCookieJar 类仅实现了非常基础的安全策略(它确保 Cookie 的域名和路径与响应中的相匹配)。若要通过自定义算法增强安全策略,请重写 setCookiesFromUrl() 方法。
此外,QNetworkCookieJar 没有设定 Cookie 存储池的最大容量。请重写此函数以丢弃较旧的 Cookie,从而为新的 Cookie 腾出空间。
另请参阅 cookiesForUrl()、QNetworkAccessManager::setCookieJar() 和QNetworkCookie::normalize()。
[virtual] bool QNetworkCookieJar::updateCookie(const QNetworkCookie &cookie)
如果该 Cookie 存储区中存在与cookie 标识符相同的 Cookie,则会对其进行更新。此函数使用insertCookie()。
如果cookie 已被更新,则返回true ;如果 Cookie 池中没有与cookie 标识符匹配的 Cookie,则返回 false。
另请参阅 QNetworkCookie::hasSameIdentifier()。
[virtual protected] bool QNetworkCookieJar::validateCookie(const QNetworkCookie &cookie, const QUrl &url) const
如果cookie 的域名和路径有效,则返回 `true `;否则返回 `false`。url 参数用于确定 Cookie 中指定的域名是否被允许。
© 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.