QNetworkCookieJar 类
QNetworkCookieJar 类实现了 QNetworkCookie 对象的简单 jar。 更多信息...
头文件 | #include <QNetworkCookieJar> |
CMake | find_package(Qt6 REQUIRED COMPONENTS Network) target_link_libraries(mytarget PRIVATE Qt6::Network) |
qmake | QT += network |
继承自 | QObject |
公共函数
QNetworkCookieJar(QObject *parent = nullptr) | |
虚拟 | ~QNetworkCookieJar() |
虚拟 QList<QNetworkCookie> | cookiesForUrl(const QUrl &url) const |
虚拟 bool | deleteCookie(const QNetworkCookie &cookie) |
虚拟 bool | insertCookie(const QNetworkCookie &cookie) |
虚拟 bool | setCookiesFromUrl(const QList<QNetworkCookie> &cookieList, const QUrl &url) |
虚拟 bool | updateCookie(const QNetworkCookie &cookie) |
受保护函数
QList<QNetworkCookie> | allCookies() const |
void | setAllCookies(const QList<QNetworkCookie> &cookieList) |
虚拟 bool | validateCookie(const QNetworkCookie &cookie, const QUrl &url) const |
详细信息
Cookie 是无状态协议(如 HTTP)使用的小块信息,用于在请求之间保持一些持久信息。
当远程服务器响应请求并期望在进一步发送请求时发送回相同的 Cookie 时,它会设置 Cookie。
cookie jar 是存储先前请求中设置的所有 Cookie 的对象。Web 浏览器将 Cookie jar 保存到磁盘上,以便在应用程序的调用之间保留永久 Cookie。
QNetworkCookieJar 不实现永久存储:它只保留内存中的 Cookie。一旦删除 QNetworkCookieJar 对象,它所持有的所有 Cookie 也将被丢弃。如果想要保存 Cookie,应从此类派生并实现自定义存储格式的磁盘保存。
此类仅实现了 cookie 规范推荐的基价安全功能,并未实现任何 Cookie 接受策略(接受所有请求设置的 Cookie)。要覆盖这些规则,应重写 cookiesForUrl() 和 setCookiesFromUrl() 虚拟函数。它们在 QNetworkReply 和 QNetworkAccessManager 识别到新的 Cookie 或需要 Cookie时被调用。
另请参阅 QNetworkCookie、QNetworkAccessManager、QNetworkReply、QNetworkRequest 以及 QNetworkAccessManager::setCookieJar。
成员函数文档
[显式构造函数]
QNetworkCookieJar::QNetworkCookieJar(QObject *parent = nullptr)
创建一个QNetworkCookieJar对象,并将父对象设置为parent。
Cookie jar被初始化为空。
[虚析构函数]
QNetworkCookieJar::~QNetworkCookieJar()
销毁此cookie jar对象,并丢弃其中存储的所有cookies。默认的QNetworkCookieJar实现不会将cookies保存到磁盘上。
如果你需要将cookies保存到磁盘,你必须从QNetworkCookieJar派生出来,并自行保存cookies。
[受保护函数]
QList<QNetworkCookie> QNetworkCookieJar::allCookies() const
返回cookie jar中存储的所有cookies。此函数适用于派生类以将cookies保存到磁盘,以及实现cookies过期和其他策略。
另请参阅 setAllCookies() 和 cookiesForUrl。
[虚函数]
QList<QNetworkCookie> QNetworkCookieJar::cookiesForUrl(const QUrl &url) const
返回在向url发送请求时要添加的Cookies。此函数由默认的QNetworkAccessManager::createRequest()调用,该函数将此函数返回的Cookies添加到要发送的请求中。
如果发现具有相同名称但路径不同的多个cookie,将返回路径较长的cookie,然后再返回路径较短的cookie。换句话说,此函数按路径长度递减顺序返回cookies。
默认的QNetworkCookieJar类仅实现了一个基本的安全策略(确保cookies的域名和路径与回复匹配)。要使用自己的算法增强安全策略,请重写cookiesForUrl()。
另请参阅 setCookiesFromUrl() 和 QNetworkAccessManager::setCookieJar。
[虚函数]
bool QNetworkCookieJar::deleteCookie(const QNetworkCookie &cookie)
从cookie jar中删除与cookie标识符相同的cookie。
如果删除了一个cookie,则返回true
,否则返回false。
另请参阅 QNetworkCookie::hasSameIdentifier。
[虚函数]
bool QNetworkCookieJar::insertCookie(const QNetworkCookie &cookie)
将cookie添加到此cookie jar。
如果cookie被添加,则返回true
,否则返回false。
如果cookie jar中已存在具有相同标识符的cookie,则它将被覆盖。
[受保护]
void QNetworkCookieJar::setAllCookies(const QList<QNetworkCookie> &cookieList)
将此CookieJar的内部Cookie列表设置为cookieList。此函数适用于派生类实现从持久存储加载Cookie,或通过重新实现setCookiesFromUrl()执行自己的Cookie接受策略。
另请参阅allCookies()和setCookiesFromUrl()。
[虚函数]
bool QNetworkCookieJar::setCookiesFromUrl(const QList<QNetworkCookie> &cookieList, const QUrl &url)
将列表cookieList中的Cookie添加到该CookieJar中。在插入前对Cookie进行正常化。
如果为url设置了至少一个Cookie,则返回true
,否则返回false。
如果CookieJar中已存在与cookieList中相同的Cookie,则会被覆盖。
默认的QNetworkCookieJar类仅实现了非常基本的 安全策略(确保Cookies的域名和路径匹配响应)。为了使用自己的算法增强安全策略,请覆盖setCookiesFromUrl()。
此外,QNetworkCookieJar没有最大CookieJar大小。重写此函数以丢弃旧Cookie为新Cookie腾出空间。
另请参阅cookiesForUrl(),QNetworkAccessManager::setCookieJar()和QNetworkCookie::normalize()。
[虚保护]
bool QNetworkCookieJar::updateCookie(const QNetworkCookie &cookie)
如果此CookieJar中存在具有与cookie相同标识符的Cookie,则对其进行更新。此函数使用insertCookie()。
如果cookie被更新,则返回true
,如果CookieJar中没有与cookie的标识符匹配的Cookie,则返回false。
另请参阅 QNetworkCookie::hasSameIdentifier。
[虚保护]
bool QNetworkCookieJar::validateCookie(const QNetworkCookie &cookie, const QUrl &url) const
如果cookie的域名和路径有效,则返回true
,否则返回false。使用url参数确定在Cookie中指定的域名是否允许。
© 2024 Qt公司有限公司。此处包含的文档贡献信息均归各所有者所有。所提供的文档按GNU自由文档许可证版本1.3的条款许可,由自由软件基金会发布。Qt及其相关标志是芬兰和/或全世界Qt公司有限公司的商标。所有其他商标均为各自所有者的财产。