Kei001
V2EX  ›  问与答

请教各位目前有没有方法通过 http 请求区分 win10 和 win11

By Kei001 at 2022 年 2 月 28 日 · 2231 次点击

win10 和 win11 中 Chrome 和 Edge 中 UA 都为 Windows NT 10.0 ,无法区分是 10 还是 11 。

根据 https://docs.microsoft.com/zh-cn/microsoft-edge/web-platform/how-to-detect-win11 描述,http 请求会携带 Sec-CH-UA-Platform-Version 操作系统版本,但打开浏览器审查并没有看到有携带这个 Header 。

是不是现在都得用 js 检测操作系统版本并且手动设置 header 携带版本信息了?

3 条回复  •  2022-02-28 13:46:42 +08:00
EridanusSora
   1
EridanusSora  
   2022 年 2 月 28 日   ❤️ 1
需要服务端添加 Header:Accept-CH: Sec-CH-UA-Platform-Version 客户端才会在后续请求提供 Sec-CH-UA-Platform-Version 。客户端也可以选择不提供。同时兼容性比较差,需要 Chrome89+。

顺便,JavaScript 好像也检测不到吧。
Kei001
   2
Kei001  
OP
   2022 年 2 月 28 日   ❤️ 1
@EridanusSora 感谢老哥提醒,确实加了这个 header 返回操作系统版本了。

另外 js 可以获取

```
navigator.userAgentData.getHighEntropyValues(["platformVersion"]).then(data=>{console.log(data)})
```

得到
```
{
"brands": [
{
"brand": " Not A;Brand",
"version": "99"
},
{
"brand": "Chromium",
"version": "98"
},
{
"brand": "Google Chrome",
"version": "98"
}
],
"mobile": false,
"platformVersion": "14.0.0"
}
```
THESDZ
   3
THESDZ  
   2022 年 2 月 28 日
有点好奇这个需求的来源是什么。。
© 2026 V2EX · 27ms · 3.9.8.5