HarmonyOS 鸿蒙Next webview.WebCookieManager不管理同名cookie吗

发布于 1周前 作者 zlyuanteng 来自 鸿蒙OS

HarmonyOS 鸿蒙Next webview.WebCookieManager不管理同名cookie吗 1、webview.WebCookieManager不管理同名cookie吗?唯一的变化是时间戳的变化
2、webview.WebCookieManager不会处理deleted、Max-Age = 0的cookie吗?
3、如何解决同名cookie在webview.WebCookieManager中不断累加的问题呢?

下面是一段http的cookie同步到webview.WebCookieManager中,其中有两段xys_fd_id=2f880f92dec064e5c0a178c0da923b98数据,区别在于时间戳上的变化,理论上是webview.WebCookieManager取用最新时间戳的cookie即可。

acw_tc=820edd3e67c71b9e98fa36029cc02c01f102423066b82e33b28977d3fed122d1,path=/
,HttpOnly
,Max-Age=1800
PHPSESSID=2f880f92dec064e5c0a178c0da923b98
,path=/
,touchurl=http%3A%2F%2Fbeta.xinhulu.com%2FAppbase%2FgetLatestUserProtocol
,expires=Fri, 23-Aug-2024 09:44:47 GMT
,Max-Age=604800
,path=/
,domain=xinhulu.com
,_xys_fd_id=2f880f92dec064e5c0a178c0da923b98
,expires=Sun, 15-Sep-2024 09:44:47 GMT
,Max-Age=2592000
,path=/
,domain=xinhulu.com
,SERVERID=0d9b26c31de47684c9a1db1e3c849df5|1723801487|1723801487
,Path=/
,SERVERCORSID=0d9b26c31de47684c9a1db1e3c849df5|1723801487|1723801487
,Path=/
,SameSite=None; 
_xys_fd_id=2f880f92dec064e5c0a178c0da923b98
,expires=Sun, 15-Sep-2024 09:45:05 GMT
,Max-Age=2592000
,path=/
,domain=xinhulu.com
,SERVERID=0d9b26c31de47684c9a1db1e3c849df5|1723801505|1723801487
,Path=/
,SERVERCORSID=0d9b26c31de47684c9a1db1e3c849df5|1723801505|1723801487
,Path=/
,SameSite=None

更多关于HarmonyOS 鸿蒙Next webview.WebCookieManager不管理同名cookie吗的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html

3 回复

对于您提的三个问题做以下回复:

  1. 设置同名字段cookie会覆盖之前的值 ,看看是不是域名不同
  2. 不会自动处理
  3. 可以使用clearAllCookiesSync清除,但同名cookie会自动覆盖的

参考以下demo验证,并未发现不会覆盖的情况:

import { webview } from '@kit.ArkWeb'

@Entry
@Component
struct WebComponent {
  controller: webview.WebviewController = new webview.WebviewController();
  headers : Array<webview.WebHeader> = [{ headerKey : "msg",headerValue : 'hello'}];

  build() {
    Column() {
      Button('configCookieSync1')
        .onClick(() => {
          try {
            webview.WebCookieManager.configCookieSync('https://www.example.com', 'a=b,c=d,e=f');
          } catch (error) {
            console.error(`ErrorCode: ${error.code}, Message: ${error.message}`);
          }
        })
      Button('configCookieSync2')
        .onClick(() => {
          try {
            webview.WebCookieManager.configCookieSync('https://www.example.com', 'a=b,c=mm,e=f');
          } catch (error) {
            console.error(`ErrorCode: ${error.code}, Message: ${error.message}`);
          }
        })
      Button('fetchCookieSync')
        .onClick(() => {
          try {
            let value = webview.WebCookieManager.fetchCookieSync('https://www.example.com');
            console.log("fetchCookieSync cookie = " + value);
          } catch (error) {
            console.error(`ErrorCode: ${error.code}, Message: ${error.message}`);
          }
        })
      Column() {
        Web({ src: 'www.example.com', controller: this.controller })
          .width('100%')
          .height('100%')
      }
      .layoutWeight(1)
    }
  }
}

更多关于HarmonyOS 鸿蒙Next webview.WebCookieManager不管理同名cookie吗的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html


configCookieSync 每次只能设置一条cookie吧!

在HarmonyOS鸿蒙Next版本中,webview.WebCookieManager 的行为可能与传统的Web浏览器或某些其他平台存在差异。具体而言,关于是否管理同名cookie的问题,HarmonyOS的WebCookieManager设计可能遵循特定的策略或限制。

通常情况下,WebCookieManager负责处理cookie的存储、检索和删除等操作。然而,在处理同名cookie时,它可能遵循“最新优先”原则,即保留最新的cookie值,或者根据cookie的其他属性(如路径、域、安全标志等)来决定哪个cookie应该被使用。

如果WebCookieManager在你的应用中不管理同名cookie,可能是由于以下几个原因:

  1. cookie的属性差异:同名cookie可能因为路径、域或其他属性的不同而被视为不同的cookie。
  2. 策略限制:HarmonyOS可能对cookie管理有特定的策略限制,导致同名cookie不被正确处理。
  3. 代码实现问题:检查你的代码是否正确使用了WebCookieManager的API,以及是否有其他逻辑影响了cookie的管理。

如果问题依旧没法解决请联系官网客服,官网地址是 https://www.itying.com/category-93-b0.html

回到顶部