AI摘要:文章讨论了如何获取Windows 11的操作系统信息。由于历史原因,微软不会更新Windows 11的User-Agent(UA)信息,因此无法通过UA获取Windows 11的操作系统信息。然而,可以通过User-Agent客户端提示(UA-CH)在Microsoft Edge和Google Chrome中区分Windows 11和Windows 10用户。文章还列出了支持UA-CH的浏览器,并提供了一个JavaScript示例代码,用于检测Windows 11。

User-Agent字符串

User-Agent字符串是在HTTP协议中使用的一个标头,用于标识请求端的软件环境信息。它告诉服务器发送请求的客户端的操作系统、浏览器类型和版本、硬件平台等信息。
如果你想知道更多关于UA的信息可以看
浏览器野史 —— UserAgent 列传【转载】 - 沉默的博客 (cmsblog.cn)

那么有人就会问了,既然ua可以,告诉服务器发送请求的客户端的操作系统,那应该能够获取Win11的操作系统信息,然而事实却不是这样的,因为us各种历史原因下的产物,微软官方已经正式确定不会更新win11的UA信息,这意味着我们将无法通过UA获取到win11操作系统的信息
微软官方原文

既然我们无法通过ua识别win11,那有没有其他办法呢?答案是:有!

使用User-Agent客户端提示检测Windows 11

在 Microsoft Edge (和 Google Chrome) 中,网站可以通过User-Agent客户端提示 (UA-CH) 来区分Windows 11用户和Windows 10用户。 可以在以下 UA-CH 请求标头中找到此信息:

标头字段指示Windows 10的值指示Windows 11的值
Sec-CH-UA-PlatformWindowsWindows
Sec-CH-UA-Platform-Version和 之间的 1.0.010.0.013.0.0 及更高版本

支持User-Agent客户端提示的浏览器

下表显示了哪些浏览器支持区分Windows 11和Windows 10。

浏览器支持通过User-Agent客户端提示进行区分?
Microsoft Edge 94+
Chrome 95+
Opera
Firefox
Internet Explorer 11

用于检测Windows 11的示例代码

以下代码检测Windows 11:

navigator.userAgentData.getHighEntropyValues(["platformVersion"])
 .then(ua => {
   if (navigator.userAgentData.platform === "Windows") {
     const majorPlatformVersion = parseInt(ua.platformVersion.split('.')[0]);
     if (majorPlatformVersion >= 13) {
       console.log("Windows 11 or later");
      }
      else if (majorPlatformVersion > 0) {
        console.log("Windows 10");
      }
      else {
        console.log("Before Windows 10");
      }
   }
   else {
     console.log("Not running on Windows");
   }
 });

以上信息来自微软官方文档

我的博客即将同步至腾讯云开发者社区,邀请大家一同入驻:https://cloud.tencent.com/developer/support-plan?invite_code=n5z8bvazsyzw