HarmonyOS 鸿蒙Next web组件设置cookie是否提供通过域名去设置cookie

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

HarmonyOS 鸿蒙Next web组件设置cookie是否提供通过域名去设置cookie

 当前的web组件cookie设置,只能通过具体网址去设置,没看到通过域名去设置的方法  如果只能通过具体网址去设置,那么我们这么多页面,不太友好

2 回复

您给host地址设置了cookie,之后的其他子地址也都会拥有对应的cookie。

以下是为您写的验证demo:

新建工程,

在src/main/module.json5中添加网络权限:

"module":{
  "requestPermissions": [
  {
    "name":
    'ohos.permission.INTERNET'
  }
  ]
  
}

替换Index.est文件内容:

// xxx.ets
import web_webview from '@ohos.web.webview'
import business_error from '@ohos.base'

@Entry
@Component
struct WebComponent {
  controller: web_webview.WebviewController = new web_webview.WebviewController();

  build() {
    Column() {
      Button('fetchCookieSync')
        .onClick(() => {
          try {
            let value = web_webview.WebCookieManager.fetchCookieSync('');
            console.log("fetchCookieSync host cookie = " + value);
          } catch (error) {
            let e: business_error.BusinessError = error as business_error.BusinessError;
            console.error(`ErrorCode: ${e.code},  Message: ${e.message}`);
          }
          try {
            let value = web_webview.WebCookieManager.fetchCookieSync('');
            console.log("fetchCookieSync cookie = " + value);
          } catch (error) {
            let e: business_error.BusinessError = error as business_error.BusinessError;
            console.error(`ErrorCode: ${e.code},  Message: ${e.message}`);
          }
        })
      Web({ src: '', controller: this.controller })
        .domStorageAccess(true)
        .onAppear(() => {
          try {
            // 设置多个cookie值时用','隔开,设置单个cookie值时不需要。
            web_webview.WebCookieManager.configCookieSync('', 'a=b,c=d,e=f');
          } catch (error) {
            let e: business_error.BusinessError = error as business_error.BusinessError;
            console.error(`ErrorCode: ${e.code},  Message: ${e.message}`);
          }
        })
        .onPageBegin((event) => {
          if (event) {
            console.log('url:' + event.url)
          }
        })
    }
  }
}

这里仅为网址域名添加了cookie,a=b,c=d,e=f

您点击fetchCookieSync按钮查看日志可看到,网址也是有cookie :a=b,c=d,e=f的。

网址的这个地址点击鸿蒙按钮进入的页面。

configCookieSync 为指定url设置cookie的值。

相关链接:

https://developer.huawei.com/consumer/cn/doc/harmonyos-references-V13/js-apis-webview-V13#configcookiesync11

fetchCookieSync 获取指定url对应cookie的值。

相关链接:

https://developer.huawei.com/consumer/cn/doc/harmonyos-references-V13/_ark_web___cookie_manager_a_p_i-V13#fetchcookiesync

更多关于HarmonyOS 鸿蒙Next web组件设置cookie是否提供通过域名去设置cookie的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html


在HarmonyOS鸿蒙Next web组件中,设置cookie可以通过JavaScript的document.cookie接口进行,且支持通过域名来设置cookie。具体实现方式是,在调用document.cookie设置cookie时,可以在cookie字符串中包含domain属性,从而指定该cookie所属的域名。

例如,若要将一个名为example的cookie设置为仅对example.com及其子域有效,可以这样做:

document.cookie = "example=value; domain=example.com; path=/";

其中,domain属性指定了cookie的域名范围,path属性则指定了cookie的路径范围(默认为当前路径)。

请注意,设置cookie的域名必须是当前页面域名或其父域名,否则浏览器会拒绝设置该cookie。同时,cookie的安全属性(如SecureHttpOnly)也需根据实际需求进行设置,以确保cookie的安全传输和存储。

如果需要在鸿蒙Next web组件中更灵活地管理cookie,还可以考虑使用第三方cookie管理库,这些库通常提供了更丰富的API和更好的兼容性支持。

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

回到顶部