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 携带版本信息了?
1
EridanusSora 2022-02-28 11:29:15 +08:00 1
需要服务端添加 Header:Accept-CH: Sec-CH-UA-Platform-Version 客户端才会在后续请求提供 Sec-CH-UA-Platform-Version 。客户端也可以选择不提供。同时兼容性比较差,需要 Chrome89+。
顺便,JavaScript 好像也检测不到吧。 |
2
Kei001 OP @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" } ``` |
3
THESDZ 2022-02-28 13:46:42 +08:00
有点好奇这个需求的来源是什么。。
|