Qt网络编程:QNetworkCookie

一、描述

QNetworkCookie 保存从网络接收到的 cookie。

QNetworkCookie 使用 parseCookies() 函数从 HTTP 标头格式解析 cookie 。

1.1、cookie

cookie 是无状态协议(如 HTTP)用于跨请求维护某些持久信息。

cookie 由远程服务器在响应请求时设置,并期望在发送进一步请求时将相同的 cookie 发回

  • cookie 有名称,但它们对应用程序是不透明的(也就是说,存储在其中的信息对应用程序没有意义)。
  • cookie 有关联的路径名,指示何时应再次将 cookie 发送到服务器。
  • cookie 也可以有一个过期日期,表明其有效性。如果没有到期日期,则 cookie 被视为“会话 cookie”,应在应用程序退出时(或其会话结束时)丢弃。


二、类型成员

1、enum QNetworkCookie::RawForm:此枚举与 toRawForm() 函数一起使用来声明应返回哪种形式的 cookie。

  • NameAndValueOnly:使 toRawForm() 仅返回 cookie 的“NAME=VALUE”部分,适合在客户端请求的“Cookie:”标头中发送回服务器。多个 cookie 在“Cookie:”标题字段中用分号分隔。
  • Full:使 toRawForm() 返回完整的 cookie 内容,适合在服务器的“Set-Cookie:”标头中发送给客户端。

请注意,只有完整形式的 cookie 才能解析回其原始内容。


三、成员函数

1、void setHttpOnly(bool enable)

设置 cookie 是否启用了“HttpOnly”标志。

“HttpOnly” cookie 仅由网络请求和回复设置和检索,即 HTTP 协议,无法从浏览器上运行的脚本访问它。

2、void setSecure(bool enable)

启用 cookie 的安全标志。安全 cookie 可能包含私人信息,不应通过未加密的连接重新发送。

3、bool isSessionCookie()

cookie 是否会话 cookie。 会话 cookie 是没有过期日期的 cookie,这意味着当应用程序的会话概念结束时(通常在应用程序退出时),它应该被丢弃。

4、void normalize(const QUrl &url)

如果 cookie 的路径和域以前是空的,则此函数会对其进行规范化。url 参数用于确定正确的域和路径。

5、[static] QList<QNetworkCookie> parseCookies(const QByteArray &cookieString)

解析从“Set-Cookie:”标头中的服务器响应接收的 cookie 字符串 cookieString。 如果出现解析错误,此函数将返回一个空列表。

由于 HTTP 标头可以同时设置多个 cookie,因此该函数返回一个 QList<QNetworkCookie>,每个解析的 cookie 一个。

6、void setDomain(const QString &domain)

设置 cookie 关联的域。

7、void setExpirationDate(const QDateTime &date)

设置 cookie 的到期日期。 为这个 cookie 设置一个无效的到期日期将意味着它是一个会话 cookie。

8、void setName(const QByteArray &cookieName)

设置 cookie 的名称。将 cookie 名称设置为空的 QByteArray 将使此 cookie 无效。

9、void setPath(const QString &path)

设置 cookie 关联的路径。

10、void setValue(const QByteArray &value)

设置 cookie 的值。

11、QByteArray toRawForm(QNetworkCookie::RawForm form = Full)

返回此 QNetworkCookie 的原始形式。

四、补充Cookie知识

Cookie 会根据从服务器端发送的响应报文内的 Set-Cookie 标头信息,通知客户端保存 Cookie。下次客户端再往该服务器发送请求时,客户端会自动在请求报文中加入 Cookie 值后发送出去。

服务器端发现客户端发送过来的 Cookie 后,会检查是从哪一 个客户端发来的连接请求,然后对比服务器上的记录,最后得到之前的状态信息。

 

  • 3
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值