HarmonyOS鸿蒙Next中如何解决Web组件设置Cookie属性无法生效的问题
HarmonyOS鸿蒙Next中如何解决Web组件设置Cookie属性无法生效的问题
【问题现象】
Web组件设置Cookie属性无法生效,以设置过期时间为例。如下代码示例,把expires=Fri, 13 Aug 2032 12:31:23 GMT改成expires=Sat, 13 Aug 2016 12:34:02 GMT未生效。
初始设置代码示例如下:
let cookieData ='OPENDUSS=dxm_4EfQZ77x-Sj789s23KUPp4dGFM,path=/,expires=Fri, 13 Aug 2032 12:31:23 GMT,domain=.dxmcash.baidu.com,httponly,secure'
webview.WebCookieManager.configCookie('https://www.dxmcash.baidu.com', cookieData)
清除设置代码示例如下:
let cookieData = 'OPENDUSS=dxm_4EfQZ77x-Sj789s23KUPp4dGFM,path=/,expires=Sat, 13 Aug 2016 12:34:02 GMT,domain=.dxmcash.baidu.com,httponly,secure'
webview.WebCookieManager.configCookie('https://www.dxmcash.baidu.com', cookieData)
【背景知识】
- fetchCookieSync接口:Cookie设置不支持以逗号分隔注入,设置Cookie过期时间等其他属性时需要使用分号“;”分隔。
【解决方案】
CookieData内容以分号“;”进行分割,代码示例如下:
import web_webview from '@ohos.web.webview';
@Entry
@Component
struct Index {
controller: web_webview.WebviewController = new web_webview.WebviewController();
cookieData1 = 'OPENDUSS=dxm_4EfQZ77x-Sj789s23KUPp4dGFM;path=/;expires=Fri,13 Aug 2032 12:31:23 GMT;domain=.example.com;httponly;secure;'
cookieData2 = 'OPENDUSS=dxm_4EfQZ77x-Sj789s23KUPp4dGFM;path=/;expires=Sat,13 Aug 2016 12:34:02 GMT;domain=.example.com;httponly;secure;'
build() {
Column() {
Button('configCookieSync1')
.onClick(() => {
try {
web_webview.WebCookieManager.configCookieSync('https://www.example.com',this.cookieData1 );
console.log("cookie 操作:configCookieSync1")
} catch (error) {
}
})
Button('configCookieSync2')
.onClick(() => {
try {
web_webview.WebCookieManager.configCookieSync('https://www.example.com',this.cookieData2 );
console.log("cookie 操作:configCookieSync2")
} catch (error) {
}
})
Button('fetchCookieSync')
.onClick(() => {
try {
let value = web_webview.WebCookieManager.fetchCookieSync('https://www.example.com');
console.log("cookie 操作:fetchCookieSync cookie = " + value);
} catch (error) {
}
})
Web({ src: 'https://www.example.com', controller: this.controller })
}
}
}
其中关键步骤是:
(1)首先点击configCookieSync1后再通过fetchCookieSync获取cookie,日志如下则说明cookie设置成功。
10-22 19:41:17.434 48653-48653 A03D00/com.exa...bcookie/JSAPP com.examp...ebcookie I cookie 操作:configCookieSync1
10-22 19:41:18.975 48653-48653 A03D00/com.exa...bcookie/JSAPP com.examp...ebcookie I cookie 操作:fetchCookieSync cookie = OPENDUSS=dxm_4EfQZ77x-Sj789s23KUPp4dGFM
(2)然后点击configCookieSync2后再通过fetchCookieSync获取cookie,日志如下则说明cookie清除成功。
10-2219:42:06.394 48653-48653 A03D00/com.exa...bcookie/JSAPP com.examp...ebcookie I cookie 操作:configCookieSync2
10-22 19:42:07.559 48653-48653 A03D00/com.exa...bcookie/JSAPP com.examp...ebcookie I cookie 操作:fetchCookieSync cookie =
更多关于HarmonyOS鸿蒙Next中如何解决Web组件设置Cookie属性无法生效的问题的实战教程也可以访问 https://www.itying.com/category-93-b0.html
更多关于HarmonyOS鸿蒙Next中如何解决Web组件设置Cookie属性无法生效的问题的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html
在HarmonyOS鸿蒙Next中,Web组件设置Cookie属性无法生效的问题
在HarmonyOS鸿蒙Next中,Web组件设置Cookie属性无法生效的问题是由于CookieData
内容使用了逗号分隔。解决方案是将CookieData
内容改为分号“;”进行分割。示例代码如下:
import web_webview from '@ohos.web.webview';
@Entry
@Component
struct Index {
controller: web_webview.WebviewController = new web_webview.WebviewController();
cookieData1 = 'OPENDUSS=dxm_4EfQZ77x-Sj789s23KUPp4dGFM;path=/;expires=Fri,13 Aug 2032 12:31:23 GMT;domain=.example.com;httponly;secure;';
cookieData2 = 'OPENDUSS=dxm_4EfQZ77x-Sj789s23KUPp4dGFM;path=/;expires=Sat,13 Aug 2016 12:34:02 GMT;domain=.example.com;httponly;secure;';
build() {
Column() {
Button('configCookieSync1')
.onClick(() => {
try {
web_webview.WebCookieManager.configCookieSync('https://www.example.com', this.cookieData1);
console.log("cookie 操作:configCookieSync1");
} catch (error) {}
});
Button('configCookieSync2')
.onClick(() => {
try {
web_webview.WebCookieManager.configCookieSync('https://www.example.com', this.cookieData2);
console.log("cookie 操作:configCookieSync2");
} catch (error) {}
});
Button('fetchCookieSync')
.onClick(() => {
try {
let value = web_webview.WebCookieManager.fetchCookieSync('https://www.example.com');
console.log("cookie 操作:fetchCookieSync cookie = " + value);
} catch (error) {}
});
Web({ src: 'https://www.example.com', controller: this.controller });
}
}
}
通过以上代码,可以正确设置和清除Cookie属性。