HarmonyOS鸿蒙Next中Web发起的请求,requestheader中sec-ch-ua-platform为何为Unknown
HarmonyOS鸿蒙Next中Web发起的请求,requestheader中sec-ch-ua-platform为何为Unknown 【问题描述】:ArkWeb加载网页,比如www.baidu.com,同样的请求,requestheaders中的sec-ch-ua-platform,在PC浏览器上显示为"Windows",在ArkWeb中显示为unknown
【设备信息】Mate60pro,API17
【诉求】确认显示为Unknown是否合理
sec-ch-ua-platform 是 User-Agent Client Hints 特性的一部分,当前规格没有做要求。
User-Agent Client Hints 相关字段,后续会和Chromium同步。
【解决方案】
一、 目前使用User-Agent判断系统,默认User-Agent定义:
Mozilla/5.0 ({DeviceType}; {OSName} {OSVersion}) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/{ChromeCompatibleVersion}.0.0.0 Safari/537.36 ArkWeb/{ArkWeb VersionCode} {DeviceCompat} {扩展区}
举例说明:
Mozilla/5.0 (Phone; OpenHarmony 5.0) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/114.0.0.0 Safari/537.36 ArkWeb/4.1.6.1 Mobile
可以使用ArkWeb关键字和OpenHarmony关键字识别是否是HarmonyOS设备。
二、如果是网页开发者,可以根据设备端传递的设备信息对网页做相应的适配,以适配多种设备以及设备型号。
- 通过设置UserAgent,把设备端标识信息传递给网页,网页端可以通过deviceType识别设备类型。
aboutToAppear(): void {
webview.once('webInited', () => {
try {
// 应用侧用法示例,定制UserAgent。
this.ua = this.controller.getUserAgent() +
'Mozilla/5.0 ({deviceType}; {OSName} {OSVersion}) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/114.0.0.0 Safari/537.36 ArkWeb/{ArkWeb VersionCode} {Mobile}';
this.controller.setCustomUserAgent(this.ua);
} catch (error) {
console.error(`ErrorCode: ${(error as BusinessError).code}, Message: ${(error as BusinessError).message}`);
}
})
}
- 网页侧通过userAgent,获得设备端标识信息,代码示例如下:
<script>
window.onload = function() {
const resultText = document.getElementById("result");
// 获得userAgent
resultText.innerHTML = navigator.userAgent;
}
</script>
- 在Web的onControllerAttached里面设置UserAgent。
@State userAgent:string = 'Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/39.0.2171.71 Safari/537.36 ArkWeb/4.1.6.1 Mobile automobile/792 HuaweiBrowser'
Web({ src: '', controller: this.controller})
.onControllerAttached(()=>{
this.controller.setCustomUserAgent(this.userAgent);
this.controller.loadUrl('xxxxxx')
})
更多关于HarmonyOS鸿蒙Next中Web发起的请求,requestheader中sec-ch-ua-platform为何为Unknown的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html
我看了下arkweb的请求头好像是没有sec-ch-ua,sec-ch-ua-platform,sec-ch-ua-Mobile等这几个字段的,所以是unknown
这些请求头都是有的,你再确认下,
在HarmonyOS鸿蒙Next中,Web请求的sec-ch-ua-platform标头值为"Unknown",是因为鸿蒙系统未在Chromium的User-Agent客户端提示标准预定义平台列表中注册。该标头用于向服务器传递客户端操作系统信息,鸿蒙作为独立系统,尚未被主流浏览器内核默认识别为已知平台,导致返回此默认值。这属于平台标识机制问题,不影响实际网络请求功能。
在HarmonyOS Next的ArkWeb中,sec-ch-ua-platform 请求头显示为 "Unknown" 是符合当前设计预期的行为。该请求头属于User-Agent Client Hints的一部分,用于向服务器传递客户端平台信息。由于ArkWeb基于系统级Web引擎实现,其默认行为未主动填充特定平台标识(如"Windows"或"Android"),而是统一返回 "Unknown" 以遵循隐私最小化原则。
这一设计符合HarmonyOS的隐私安全规范,避免向服务器过度暴露设备信息。若业务场景需传递平台标识,建议通过ArkWeb的配置接口自定义请求头,或依赖服务端通过其他标准字段(如User-Agent)进行平台识别。当前行为无需修复,属于正常机制。

