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

2022-02-28 10:45:53 +08:00
 Kei001

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 携带版本信息了?

1153 次点击
所在节点    问与答
3 条回复
EridanusSora
2022-02-28 11:29:15 +08:00
需要服务端添加 Header:Accept-CH: Sec-CH-UA-Platform-Version 客户端才会在后续请求提供 Sec-CH-UA-Platform-Version 。客户端也可以选择不提供。同时兼容性比较差,需要 Chrome89+。

顺便,JavaScript 好像也检测不到吧。
Kei001
2022-02-28 12:29:14 +08:00
@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
2022-02-28 13:46:42 +08:00
有点好奇这个需求的来源是什么。。

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/836836

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX