harmony 鸿蒙Class (WebCookieManager)

  • 2025-06-12
  • 浏览 (4)

Class (WebCookieManager)

通过WebCookie可以控制Web组件中的cookie的各种行为,其中每个应用中的所有Web组件共享一个WebCookieManager实例。

说明:

  • 本模块接口从API version 9开始支持。后续版本如有新增内容,则采用上角标单独标记该内容的起始版本。

  • 示例效果请以真机运行为准,当前IDE预览器不支持。

fetchCookieSync11+

static fetchCookieSync(url: string, incognito?: boolean): string

获取指定url对应cookie的值。

说明:

系统会自动清理过期的cookie,对于同名key的数据,新数据将会覆盖前一个数据。

为了获取可正常使用的cookie值,fetchCookieSync需传入完整链接。

fetchCookieSync用于获取所有的cookie值,每条cookie值之间会通过”; “进行分隔,但无法单独获取某一条特定的cookie值。

系统能力: SystemCapability.Web.Webview.Core

参数:

参数名 类型 必填 说明
url string 要获取的cookie所属的url,建议使用完整的url。
incognito boolean true表示获取隐私模式下webview的内存cookies,false表示正常非隐私模式下的cookies。

返回值:

类型 说明
string 指定url对应的cookie的值。

错误码:

以下错误码的详细介绍请参见webview错误码

错误码ID 错误信息
17100002 URL error. No valid cookie found for the specified URL.
401 Parameter error. Possible causes: 1. Mandatory parameters are left unspecified. 2. Incorrect parameter types.

示例:

// xxx.ets
import { webview } from '@kit.ArkWeb';
import { BusinessError } from '@kit.BasicServicesKit';

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

  build() {
    Column() {
      Button('fetchCookieSync')
        .onClick(() => {
          try {
            let value = webview.WebCookieManager.fetchCookieSync('https://www.example.com');
            console.log("fetchCookieSync cookie = " + value);
          } catch (error) {
            console.error(`ErrorCode: ${(error as BusinessError).code},  Message: ${(error as BusinessError).message}`);
          }
        })
      Web({ src: 'www.example.com', controller: this.controller })
    }
  }
}

fetchCookie11+

static fetchCookie(url: string, callback: AsyncCallback<string>): void

异步callback方式获取指定url对应cookie的值。

系统能力: SystemCapability.Web.Webview.Core

参数:

参数名 类型 必填 说明
url string 要获取的cookie所属的url,建议使用完整的url。
callback AsyncCallback<string> callback回调,用于获取cookie

错误码:

以下错误码的详细介绍请参见webview错误码

错误码ID 错误信息
401 Parameter error. Possible causes: 1. Mandatory parameters are left unspecified. 2. Incorrect parameter types.
17100002 URL error. No valid cookie found for the specified URL.

示例:

// xxx.ets
import { webview } from '@kit.ArkWeb';
import { BusinessError } from '@kit.BasicServicesKit';

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

  build() {
    Column() {
      Button('fetchCookie')
        .onClick(() => {
          try {
            webview.WebCookieManager.fetchCookie('https://www.example.com', (error, cookie) => {
              if (error) {
                console.error(`ErrorCode: ${(error as BusinessError).code},  Message: ${(error as BusinessError).message}`);
                return;
              }
              if (cookie) {
                console.log('fetchCookie cookie = ' + cookie);
              }
            })
          } catch (error) {
            console.error(`ErrorCode: ${(error as BusinessError).code},  Message: ${(error as BusinessError).message}`);
          }
        })
      Web({ src: 'www.example.com', controller: this.controller })
    }
  }
}

fetchCookie11+

static fetchCookie(url: string): Promise<string>

以Promise方式异步获取指定url对应cookie的值。

系统能力: SystemCapability.Web.Webview.Core

参数:

参数名 类型 必填 说明
url string 要获取的cookie所属的url,建议使用完整的url。

返回值:

类型 说明
Promise<string> Promise实例,用于获取指定url对应的cookie值。

错误码:

以下错误码的详细介绍请参见webview错误码

错误码ID 错误信息
401 Parameter error. Possible causes: 1. Mandatory parameters are left unspecified. 2. Incorrect parameter types.
17100002 URL error. No valid cookie found for the specified URL.

示例:

// xxx.ets
import { webview } from '@kit.ArkWeb';
import { BusinessError } from '@kit.BasicServicesKit';

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

  build() {
    Column() {
      Button('fetchCookie')
        .onClick(() => {
          try {
            webview.WebCookieManager.fetchCookie('https://www.example.com')
              .then(cookie => {
                console.log("fetchCookie cookie = " + cookie);
              })
              .catch((error: BusinessError) => {
                console.error(`ErrorCode: ${error.code},  Message: ${error.message}`);
              })
          } catch (error) {
            console.error(`ErrorCode: ${(error as BusinessError).code},  Message: ${(error as BusinessError).message}`);
          }
        })
      Web({ src: 'www.example.com', controller: this.controller })
    }
  }
}

fetchCookie14+

static fetchCookie(url: string, incognito: boolean): Promise<string>

以Promise方式异步获取指定url对应cookie的值。

系统能力: SystemCapability.Web.Webview.Core

参数:

参数名 类型 必填 说明
url string 要获取的cookie所属的url,建议使用完整的url。
incognito boolean true表示获取隐私模式下webview的内存cookies,false表示正常非隐私模式下的cookies。

返回值:

类型 说明
Promise<string> Promise实例,用于获取指定url对应的cookie值。

错误码:

以下错误码的详细介绍请参见webview错误码

错误码ID 错误信息
401 Parameter error. Possible causes: 1. Mandatory parameters are left unspecified. 2. Incorrect parameter types.
17100002 URL error. No valid cookie found for the specified URL.

示例:

// xxx.ets
import { webview } from '@kit.ArkWeb';
import { BusinessError } from '@kit.BasicServicesKit';

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

  build() {
    Column() {
      Button('fetchCookie')
        .onClick(() => {
          try {
            webview.WebCookieManager.fetchCookie('https://www.example.com', false)
              .then(cookie => {
                console.log("fetchCookie cookie = " + cookie);
              })
              .catch((error: BusinessError) => {
                console.error(`ErrorCode: ${error.code},  Message: ${error.message}`);
              })
          } catch (error) {
            console.error(`ErrorCode: ${(error as BusinessError).code},  Message: ${(error as BusinessError).message}`);
          }
        })
      Web({ src: 'www.example.com', controller: this.controller })
    }
  }
}

configCookieSync11+

static configCookieSync(url: string, value: string, incognito?: boolean): void

为指定url设置单个cookie的值。

说明:

configCookieSync中的url,可以指定域名的方式来使得页面内请求也附带上cookie。

同步cookie的时机建议在Web组件加载之前完成。

若通过configCookieSync进行两次或多次设置cookie,则每次设置的cookie之间会通过”; “进行分隔。

Cookie每30s周期性保存到磁盘中,也可以使用接口saveCookieAsync进行强制落盘。

系统能力: SystemCapability.Web.Webview.Core

参数:

参数名 类型 必填 说明
url string 要设置的cookie所属的url,建议使用完整的url。
value string 要设置的cookie的值。
incognito boolean true表示设置隐私模式下对应url的cookies,false表示设置正常非隐私模式下对应url的cookies。

错误码:

以下错误码的详细介绍请参见webview错误码

错误码ID 错误信息
17100002 URL error. No valid cookie found for the specified URL.
17100005 The provided cookie value is invalid. It must follow the format specified in RFC 6265.
401 Parameter error. Possible causes: 1. Mandatory parameters are left unspecified. 2. Incorrect parameter types.

示例:

// xxx.ets
import { webview } from '@kit.ArkWeb';
import { BusinessError } from '@kit.BasicServicesKit';

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

  build() {
    Column() {
      Button('configCookieSync')
        .onClick(() => {
          try {
            // configCookieSync每次仅支持设置单个cookie值。
            webview.WebCookieManager.configCookieSync('https://www.example.com', 'a=b');
          } catch (error) {
            console.error(`ErrorCode: ${(error as BusinessError).code},  Message: ${(error as BusinessError).message}`);
          }
        })
      Web({ src: 'www.example.com', controller: this.controller })
    }
  }
}

configCookieSync14+

static configCookieSync(url: string, value: string, incognito: boolean, includeHttpOnly: boolean): void

为指定url设置cookie的值。

系统能力: SystemCapability.Web.Webview.Core

参数:

参数名 类型 必填 说明
url string 要设置的cookie所属的url,建议使用完整的url。
value string 要设置的cookie的值。
incognito boolean true表示设置隐私模式下对应url的cookies,false表示设置正常非隐私模式下对应url的cookies。
includeHttpOnly boolean true表示允许覆盖含有http-only的cookies,false表示不允许覆盖含有http-only的cookies。

错误码:

以下错误码的详细介绍请参见webview错误码

错误码ID 错误信息
17100002 URL error. No valid cookie found for the specified URL.
17100005 The provided cookie value is invalid. It must follow the format specified in RFC 6265.
401 Parameter error. Possible causes: 1. Mandatory parameters are left unspecified. 2. Incorrect parameter types.

示例:

// xxx.ets
import { webview } from '@kit.ArkWeb';
import { BusinessError } from '@kit.BasicServicesKit';

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

  build() {
    Column() {
      Button('configCookieSync')
        .onClick(() => {
          try {
            // 仅支持设置单个cookie值。
            webview.WebCookieManager.configCookieSync('https://www.example.com', 'a=b', false, false);
          } catch (error) {
            console.error(`ErrorCode: ${(error as BusinessError).code},  Message: ${(error as BusinessError).message}`);
          }
        })
      Web({ src: 'www.example.com', controller: this.controller })
    }
  }
}

configCookie11+

static configCookie(url: string, value: string, callback: AsyncCallback<void>): void

异步callback方式为指定url设置单个cookie的值。

系统能力: SystemCapability.Web.Webview.Core

参数:

参数名 类型 必填 说明
url string 要获取的cookie所属的url,建议使用完整的url。
value string 要设置的cookie的值。
callback AsyncCallback<void> callback回调,用于获取设置cookie的结果

错误码:

以下错误码的详细介绍请参见webview错误码

错误码ID 错误信息
401 Parameter error. Possible causes: 1. Mandatory parameters are left unspecified. 2. Incorrect parameter types.
17100002 URL error. No valid cookie found for the specified URL.
17100005 The provided cookie value is invalid. It must follow the format specified in RFC 6265.

示例:

// xxx.ets
import { webview } from '@kit.ArkWeb';
import { BusinessError } from '@kit.BasicServicesKit';

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

  build() {
    Column() {
      Button('configCookie')
        .onClick(() => {
          try {
            webview.WebCookieManager.configCookie('https://www.example.com', "a=b", (error) => {
              if (error) {
                console.error(`ErrorCode: ${(error as BusinessError).code},  Message: ${(error as BusinessError).message}`);
              }
            })
          } catch (error) {
            console.error(`ErrorCode: ${(error as BusinessError).code},  Message: ${(error as BusinessError).message}`);
          }
        })
      Web({ src: 'www.example.com', controller: this.controller })
    }
  }
}

configCookie11+

static configCookie(url: string, value: string): Promise<void>

以异步Promise方式为指定url设置单个cookie的值。

系统能力: SystemCapability.Web.Webview.Core

参数:

参数名 类型 必填 说明
url string 要获取的cookie所属的url,建议使用完整的url。
value string 要设置的cookie的值。

返回值:

类型 说明
Promise<void> Promise实例,用于获取指定url设置单个cookie值是否成功。

错误码:

以下错误码的详细介绍请参见webview错误码

错误码ID 错误信息
401 Parameter error. Possible causes: 1. Mandatory parameters are left unspecified. 2. Incorrect parameter types.
17100002 URL error. No valid cookie found for the specified URL.
17100005 The provided cookie value is invalid. It must follow the format specified in RFC 6265.

示例:

// xxx.ets
import { webview } from '@kit.ArkWeb';
import { BusinessError } from '@kit.BasicServicesKit';

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

  build() {
    Column() {
      Button('configCookie')
        .onClick(() => {
          try {
            webview.WebCookieManager.configCookie('https://www.example.com', 'a=b')
              .then(() => {
                console.log('configCookie success!');
              })
              .catch((error: BusinessError) => {
                console.log('error: ' + JSON.stringify(error));
              })
          } catch (error) {
            console.error(`ErrorCode: ${(error as BusinessError).code},  Message: ${(error as BusinessError).message}`);
          }
        })
      Web({ src: 'www.example.com', controller: this.controller })
    }
  }
}

configCookie14+

static configCookie(url: string, value: string, incognito: boolean, includeHttpOnly: boolean): Promise<void>

以异步Promise方式为指定url设置单个cookie的值。

系统能力: SystemCapability.Web.Webview.Core

参数:

参数名 类型 必填 说明
url string 要获取的cookie所属的url,建议使用完整的url。
value string 要设置的cookie的值。
incognito boolean true表示设置隐私模式下对应url的cookies,false表示设置正常非隐私模式下对应url的cookies。
includeHttpOnly boolean true表示允许覆盖含有http-only的cookies,false表示不允许覆盖含有http-only的cookies。

返回值:

类型 说明
Promise<void> Promise实例,用于获取指定url设置单个cookie值是否成功。

错误码:

以下错误码的详细介绍请参见webview错误码

错误码ID 错误信息
401 Parameter error. Possible causes: 1. Mandatory parameters are left unspecified. 2. Incorrect parameter types.
17100002 URL error. No valid cookie found for the specified URL.
17100005 The provided cookie value is invalid. It must follow the format specified in RFC 6265.

示例:

// xxx.ets
import { webview } from '@kit.ArkWeb';
import { BusinessError } from '@kit.BasicServicesKit';

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

  build() {
    Column() {
      Button('configCookie')
        .onClick(() => {
          try {
            webview.WebCookieManager.configCookie('https://www.example.com', 'a=b', false, false)
              .then(() => {
                console.log('configCookie success!');
              })
              .catch((error: BusinessError) => {
                console.log('error: ' + JSON.stringify(error));
              })
          } catch (error) {
            console.error(`ErrorCode: ${(error as BusinessError).code},  Message: ${(error as BusinessError).message}`);
          }
        })
      Web({ src: 'www.example.com', controller: this.controller })
    }
  }
}

saveCookieSync15+

static saveCookieSync(): void

将当前存在内存中的cookie同步保存到磁盘中。

系统能力: SystemCapability.Web.Webview.Core

说明:

saveCookieSync用于强制将需要持久化的cookies写入磁盘。PC/2in1和Tablet设备不会持久化session cookie,即使调用saveCookieSync,也不会将session cookie写入磁盘。

示例:

// xxx.ets
import { webview } from '@kit.ArkWeb';
import { BusinessError } from '@kit.BasicServicesKit';

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

  build() {
    Column() {
      Button('saveCookieSync')
        .onClick(() => {
          try {
            webview.WebCookieManager.saveCookieSync();
          } catch (error) {
            console.error(`ErrorCode: ${(error as BusinessError).code},  Message: ${(error as BusinessError).message}`);
          }
        })
      Web({ src: 'www.example.com', controller: this.controller })
    }
  }
}

saveCookieAsync

static saveCookieAsync(callback: AsyncCallback<void>): void

将当前存在内存中的cookie异步保存到磁盘中。

说明:

Cookie信息存储在应用沙箱路径下/proc/{pid}/root/data/storage/el2/base/cache/web/Cookies。

系统能力: SystemCapability.Web.Webview.Core

参数:

参数名 类型 必填 说明
callback AsyncCallback<void> callback回调,用于获取cookie是否成功保存。

错误码:

以下错误码的详细介绍请参见webview错误码

错误码ID 错误信息
401 Parameter error. Possible causes: 1. Mandatory parameters are left unspecified. 2. Incorrect parameter types. 3.Parameter verification failed.

示例:

// xxx.ets
import { webview } from '@kit.ArkWeb';
import { BusinessError } from '@kit.BasicServicesKit';

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

  build() {
    Column() {
      Button('saveCookieAsync')
        .onClick(() => {
          try {
            webview.WebCookieManager.saveCookieAsync((error) => {
              if (error) {
                console.error(`ErrorCode: ${(error as BusinessError).code},  Message: ${(error as BusinessError).message}`);
              }
            })
          } catch (error) {
            console.error(`ErrorCode: ${(error as BusinessError).code},  Message: ${(error as BusinessError).message}`);
          }
        })
      Web({ src: 'www.example.com', controller: this.controller })
    }
  }
}

saveCookieAsync

static saveCookieAsync(): Promise<void>

将当前存在内存中的cookie以Promise方法异步保存到磁盘中。

系统能力: SystemCapability.Web.Webview.Core

返回值:

类型 说明
Promise<void> Promise实例,用于获取cookie是否成功保存。

错误码:

以下错误码的详细介绍请参见webview错误码

错误码ID 错误信息
401 Parameter error. Possible causes: 1. Mandatory parameters are left unspecified. 2. Incorrect parameter types. 3.Parameter verification failed.

示例:

// xxx.ets
import { webview } from '@kit.ArkWeb';
import { BusinessError } from '@kit.BasicServicesKit';

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

  build() {
    Column() {
      Button('saveCookieAsync')
        .onClick(() => {
          try {
            webview.WebCookieManager.saveCookieAsync()
              .then(() => {
                console.log("saveCookieAsyncCallback success!");
              })
              .catch((error: BusinessError) => {
                console.error("error: " + error);
              });
          } catch (error) {
            console.error(`ErrorCode: ${(error as BusinessError).code},  Message: ${(error as BusinessError).message}`);
          }
        })
      Web({ src: 'www.example.com', controller: this.controller })
    }
  }
}

putAcceptCookieEnabled

static putAcceptCookieEnabled(accept: boolean): void

设置WebCookieManager实例是否拥有发送和接收cookie的权限。

系统能力: SystemCapability.Web.Webview.Core

参数:

参数名 类型 必填 说明
accept boolean 设置是否拥有发送和接收cookie的权限,默认为true,表示拥有发送和接收cookie的权限。

错误码:

以下错误码的详细介绍请参见webview错误码

错误码ID 错误信息
401 Parameter error. Possible causes: 1. Mandatory parameters are left unspecified. 2. Incorrect parameter types. 3.Parameter verification failed.

示例:

// xxx.ets
import { webview } from '@kit.ArkWeb';
import { BusinessError } from '@kit.BasicServicesKit';

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

  build() {
    Column() {
      Button('putAcceptCookieEnabled')
        .onClick(() => {
          try {
            webview.WebCookieManager.putAcceptCookieEnabled(false);
          } catch (error) {
            console.error(`ErrorCode: ${(error as BusinessError).code},  Message: ${(error as BusinessError).message}`);
          }
        })
      Web({ src: 'www.example.com', controller: this.controller })
    }
  }
}

isCookieAllowed

static isCookieAllowed(): boolean

获取WebCookieManager实例是否拥有发送和接收cookie的权限。

系统能力: SystemCapability.Web.Webview.Core

返回值:

类型 说明
boolean 是否拥有发送和接收cookie的权限。
true表示拥有发送和接收cookie的权限,false表示无发送和接收cookie的权限。
默认值:true。

示例:

// xxx.ets
import { webview } from '@kit.ArkWeb';

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

  build() {
    Column() {
      Button('isCookieAllowed')
        .onClick(() => {
          let result = webview.WebCookieManager.isCookieAllowed();
          console.log("result: " + result);
        })
      Web({ src: 'www.example.com', controller: this.controller })
    }
  }
}

putAcceptThirdPartyCookieEnabled

static putAcceptThirdPartyCookieEnabled(accept: boolean): void

设置WebCookieManager实例是否拥有发送和接收第三方cookie的权限。

系统能力: SystemCapability.Web.Webview.Core

参数:

参数名 类型 必填 说明
accept boolean 设置是否拥有发送和接收第三方cookie的权限。
true表示设置拥有发送和接收第三方cookie的权限,false表示设置无发送和接收第三方cookie的权限。
默认值:false。

错误码:

以下错误码的详细介绍请参见webview错误码

错误码ID 错误信息
401 Parameter error. Possible causes: 1. Mandatory parameters are left unspecified. 2. Incorrect parameter types. 3.Parameter verification failed.

示例:

// xxx.ets
import { webview } from '@kit.ArkWeb';
import { BusinessError } from '@kit.BasicServicesKit';

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

  build() {
    Column() {
      Button('putAcceptThirdPartyCookieEnabled')
        .onClick(() => {
          try {
            webview.WebCookieManager.putAcceptThirdPartyCookieEnabled(false);
          } catch (error) {
            console.error(`ErrorCode: ${(error as BusinessError).code},  Message: ${(error as BusinessError).message}`);
          }
        })
      Web({ src: 'www.example.com', controller: this.controller })
    }
  }
}

isThirdPartyCookieAllowed

static isThirdPartyCookieAllowed(): boolean

获取WebCookieManager实例是否拥有发送和接收第三方cookie的权限。

系统能力: SystemCapability.Web.Webview.Core

返回值:

类型 说明
boolean 是否拥有发送和接收第三方cookie的权限。
true表示拥有发送和接收第三方cookie的权限,false表示无发送和接收第三方cookie的权限。
默认值:false。

示例:

// xxx.ets
import { webview } from '@kit.ArkWeb';

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

  build() {
    Column() {
      Button('isThirdPartyCookieAllowed')
        .onClick(() => {
          let result = webview.WebCookieManager.isThirdPartyCookieAllowed();
          console.log("result: " + result);
        })
      Web({ src: 'www.example.com', controller: this.controller })
    }
  }
}

existCookie

static existCookie(incognito?: boolean): boolean

获取是否存在cookie。

系统能力: SystemCapability.Web.Webview.Core

参数:

参数名 类型 必填 说明
incognito11+ boolean true表示隐私模式下查询是否存在cookies,false表示正常非隐私模式下查询是否存在cookies。

返回值:

类型 说明
boolean true表示存在cookie,false表示不存在cookie。

示例:

// xxx.ets
import { webview } from '@kit.ArkWeb';

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

  build() {
    Column() {
      Button('existCookie')
        .onClick(() => {
          let result = webview.WebCookieManager.existCookie();
          console.log("result: " + result);
        })
      Web({ src: 'www.example.com', controller: this.controller })
    }
  }
}

clearAllCookiesSync11+

static clearAllCookiesSync(incognito?: boolean): void

清除所有cookie。

系统能力: SystemCapability.Web.Webview.Core

参数:

参数名 类型 必填 说明
incognito boolean true表示清除隐私模式下Webview的所有内存cookies,false表示清除正常非隐私模式下的持久化cookies。

示例:

// xxx.ets
import { webview } from '@kit.ArkWeb';

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

  build() {
    Column() {
      Button('clearAllCookiesSync')
        .onClick(() => {
          webview.WebCookieManager.clearAllCookiesSync();
        })
      Web({ src: 'www.example.com', controller: this.controller })
    }
  }
}

clearAllCookies11+

static clearAllCookies(callback: AsyncCallback<void>): void

异步callback方式清除所有cookie。

系统能力: SystemCapability.Web.Webview.Core

参数:

参数名 类型 必填 说明
callback AsyncCallback<void> callback回调,用于获取清除所有cookie是否成功。

错误码:

以下错误码的详细介绍请参见webview错误码

错误码ID 错误信息
401 Parameter error. Possible causes: 1. Mandatory parameters are left unspecified. 2. Incorrect parameter types.

示例:

// xxx.ets
import { webview } from '@kit.ArkWeb';
import { BusinessError } from '@kit.BasicServicesKit';

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

  build() {
    Column() {
      Button('clearAllCookies')
        .onClick(() => {
          try {
            webview.WebCookieManager.clearAllCookies((error) => {
              if (error) {
                console.error(`ErrorCode: ${(error as BusinessError).code},  Message: ${(error as BusinessError).message}`);
              }
            })
          } catch (error) {
            console.error(`ErrorCode: ${(error as BusinessError).code},  Message: ${(error as BusinessError).message}`);
          }
        })
      Web({ src: 'www.example.com', controller: this.controller })
    }
  }
}

clearAllCookies11+

static clearAllCookies(): Promise<void>

异步promise方式清除所有cookie。

系统能力: SystemCapability.Web.Webview.Core

返回值:

类型 说明
Promise<void> Promise实例,用于获取清除所有cookie是否成功。

错误码:

以下错误码的详细介绍请参见webview错误码

错误码ID 错误信息
401 Parameter error. Possible causes: 1. Mandatory parameters are left unspecified.

示例:

// xxx.ets
import { webview } from '@kit.ArkWeb';
import { BusinessError } from '@kit.BasicServicesKit';

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

  build() {
    Column() {
      Button('clearAllCookies')
        .onClick(() => {
          try {
            webview.WebCookieManager.clearAllCookies()
              .then(() => {
                console.log("clearAllCookies success!");
              })
              .catch((error: BusinessError) => {
                console.error("error: " + error);
              });
          } catch (error) {
            console.error(`ErrorCode: ${(error as BusinessError).code},  Message: ${(error as BusinessError).message}`);
          }
        })
      Web({ src: 'www.example.com', controller: this.controller })
    }
  }
}

clearSessionCookieSync11+

static clearSessionCookieSync(): void

清除所有会话cookie。

系统能力: SystemCapability.Web.Webview.Core

示例:

// xxx.ets
import { webview } from '@kit.ArkWeb';

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

  build() {
    Column() {
      Button('clearSessionCookieSync')
        .onClick(() => {
          webview.WebCookieManager.clearSessionCookieSync();
        })
      Web({ src: 'www.example.com', controller: this.controller })
    }
  }
}

clearSessionCookie11+

static clearSessionCookie(callback: AsyncCallback<void>): void

异步callback方式清除所有会话cookie。

系统能力: SystemCapability.Web.Webview.Core

参数:

参数名 类型 必填 说明
callback AsyncCallback<void> callback回调,用于获取清除所有会话cookie是否成功。

错误码:

以下错误码的详细介绍请参见webview错误码

错误码ID 错误信息
401 Parameter error. Possible causes: 1. Mandatory parameters are left unspecified. 2. Incorrect parameter types.

示例:

// xxx.ets
import { webview } from '@kit.ArkWeb';
import { BusinessError } from '@kit.BasicServicesKit';

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

  build() {
    Column() {
      Button('clearSessionCookie')
        .onClick(() => {
          try {
            webview.WebCookieManager.clearSessionCookie((error) => {
              if (error) {
                console.error(`ErrorCode: ${(error as BusinessError).code},  Message: ${(error as BusinessError).message}`);
              }
            })
          } catch (error) {
            console.error(`ErrorCode: ${(error as BusinessError).code},  Message: ${(error as BusinessError).message}`);
          }
        })
      Web({ src: 'www.example.com', controller: this.controller })
    }
  }
}

clearSessionCookie11+

static clearSessionCookie(): Promise<void>

异步promise方式清除所有会话cookie。

系统能力: SystemCapability.Web.Webview.Core

返回值:

类型 说明
Promise<void> Promise实例,用于获取清除所有会话cookie是否成功。

错误码:

以下错误码的详细介绍请参见webview错误码

错误码ID 错误信息
401 Parameter error. Possible causes: 1. Mandatory parameters are left unspecified.

示例:

// xxx.ets
import { webview } from '@kit.ArkWeb';
import { BusinessError } from '@kit.BasicServicesKit';

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

  build() {
    Column() {
      Button('clearSessionCookie')
        .onClick(() => {
          try {
            webview.WebCookieManager.clearSessionCookie()
              .then(() => {
                console.log("clearSessionCookie success!");
              })
              .catch((error: BusinessError) => {
                console.error("error: " + error);
              });
          } catch (error) {
            console.error(`ErrorCode: ${(error as BusinessError).code},  Message: ${(error as BusinessError).message}`);
          }
        })
      Web({ src: 'www.example.com', controller: this.controller })
    }
  }
}

getCookie(deprecated)

static getCookie(url: string): string

获取指定url对应cookie的值。

说明:

从API version 9开始支持,从API version 11开始废弃。建议使用fetchCookieSync替代

系统能力: SystemCapability.Web.Webview.Core

参数:

参数名 类型 必填 说明
url string 要获取的cookie所属的url,建议使用完整的url。

返回值:

类型 说明
string 指定url对应的cookie的值。

错误码:

以下错误码的详细介绍请参见webview错误码

错误码ID 错误信息
17100002 URL error. No valid cookie found for the specified URL.
401 Parameter error. Possible causes: 1. Mandatory parameters are left unspecified. 2. Incorrect parameter types. 3.Parameter verification failed.

示例:

// xxx.ets
import { webview } from '@kit.ArkWeb';
import { BusinessError } from '@kit.BasicServicesKit';

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

  build() {
    Column() {
      Button('getCookie')
        .onClick(() => {
          try {
            let value = webview.WebCookieManager.getCookie('https://www.example.com');
            console.log("value: " + value);
          } catch (error) {
            console.error(`ErrorCode: ${(error as BusinessError).code},  Message: ${(error as BusinessError).message}`);
          }
        })
      Web({ src: 'www.example.com', controller: this.controller })
    }
  }
}

setCookie(deprecated)

static setCookie(url: string, value: string): void

为指定url设置单个cookie的值。

说明:

从API version 9开始支持,从API version 11开始废弃。建议使用configCookieSync11+替代

系统能力: SystemCapability.Web.Webview.Core

参数:

参数名 类型 必填 说明
url string 要设置的cookie所属的url,建议使用完整的url。
value string 要设置的cookie的值。

错误码:

以下错误码的详细介绍请参见webview错误码

错误码ID 错误信息
17100002 URL error. No valid cookie found for the specified URL.
17100005 The provided cookie value is invalid. It must follow the format specified in RFC 6265.
401 Parameter error. Possible causes: 1. Mandatory parameters are left unspecified. 2. Incorrect parameter types.

示例:

// xxx.ets
import { webview } from '@kit.ArkWeb';
import { BusinessError } from '@kit.BasicServicesKit';

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

  build() {
    Column() {
      Button('setCookie')
        .onClick(() => {
          try {
            webview.WebCookieManager.setCookie('https://www.example.com', 'a=b');
          } catch (error) {
            console.error(`ErrorCode: ${(error as BusinessError).code},  Message: ${(error as BusinessError).message}`);
          }
        })
      Web({ src: 'www.example.com', controller: this.controller })
    }
  }
}

deleteEntireCookie(deprecated)

static deleteEntireCookie(): void

清除所有cookie。

说明:

从API version 9开始支持,从API version 11开始废弃。建议使用clearAllCookiesSync替代

系统能力: SystemCapability.Web.Webview.Core

示例:

// xxx.ets
import { webview } from '@kit.ArkWeb';

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

  build() {
    Column() {
      Button('deleteEntireCookie')
        .onClick(() => {
          webview.WebCookieManager.deleteEntireCookie();
        })
      Web({ src: 'www.example.com', controller: this.controller })
    }
  }
}

deleteSessionCookie(deprecated)

static deleteSessionCookie(): void

清除所有会话cookie。

说明:

从API version 9开始支持,从API version 11开始废弃。建议使用clearSessionCookieSync替代

系统能力: SystemCapability.Web.Webview.Core

示例:

// xxx.ets
import { webview } from '@kit.ArkWeb';

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

  build() {
    Column() {
      Button('deleteSessionCookie')
        .onClick(() => {
          webview.WebCookieManager.deleteSessionCookie();
        })
      Web({ src: 'www.example.com', controller: this.controller })
    }
  }
}

你可能感兴趣的鸿蒙文章

harmony 鸿蒙ArkWeb(方舟Web)

harmony 鸿蒙ArkWeb_AnyNativeAPI

harmony 鸿蒙ArkWeb_ComponentAPI

harmony 鸿蒙ArkWeb_ControllerAPI

harmony 鸿蒙ArkWeb_CookieManagerAPI

harmony 鸿蒙ArkWeb_JavaScriptBridgeData

harmony 鸿蒙ArkWeb_JavaScriptObject

harmony 鸿蒙ArkWeb_JavaScriptValueAPI

harmony 鸿蒙ArkWeb_ProxyMethod

harmony 鸿蒙ArkWeb_ProxyMethodWithResult

0  赞