V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX 提问指南
Kei001
V2EX  ›  问与答

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

  •  
  •   Kei001 · 2022-02-28 10:45:53 +08:00 · 1306 次点击
    这是一个创建于 997 天前的主题,其中的信息可能已经有所发展或是发生改变。

    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-02-28 11:29:15 +08:00   ❤️ 1
    需要服务端添加 Header:Accept-CH: Sec-CH-UA-Platform-Version 客户端才会在后续请求提供 Sec-CH-UA-Platform-Version 。客户端也可以选择不提供。同时兼容性比较差,需要 Chrome89+。

    顺便,JavaScript 好像也检测不到吧。
    Kei001
        2
    Kei001  
    OP
       2022-02-28 12:29:14 +08:00   ❤️ 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-02-28 13:46:42 +08:00
    有点好奇这个需求的来源是什么。。
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   1411 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 24ms · UTC 23:54 · PVG 07:54 · LAX 15:54 · JFK 18:54
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.