QNetworkCookieJar 类

QNetworkCookieJar 类实现了 QNetworkCookie 对象的简单 jar。 更多信息...

头文件 #include <QNetworkCookieJar>
CMakefind_package(Qt6 REQUIRED COMPONENTS Network)
target_link_libraries(mytarget PRIVATE Qt6::Network)
qmakeQT += network
继承自 QObject

公共函数

QNetworkCookieJar(QObject *parent = nullptr)
虚拟~QNetworkCookieJar()
虚拟 QList<QNetworkCookie>cookiesForUrl(const QUrl &url) const
虚拟 booldeleteCookie(const QNetworkCookie &cookie)
虚拟 boolinsertCookie(const QNetworkCookie &cookie)
虚拟 boolsetCookiesFromUrl(const QList<QNetworkCookie> &cookieList, const QUrl &url)
虚拟 boolupdateCookie(const QNetworkCookie &cookie)

受保护函数

QList<QNetworkCookie>allCookies() const
voidsetAllCookies(const QList<QNetworkCookie> &cookieList)
虚拟 boolvalidateCookie(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时被调用。

另请参阅 QNetworkCookieQNetworkAccessManagerQNetworkReplyQNetworkRequest 以及 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公司有限公司的商标。所有其他商标均为各自所有者的财产。