文章目录
一、前言
随着外部监管对国产化的要求越来越高,所在产品团队信创专项改造工作开始实施,需求如下:信创平台控件只能使用在信创终端使用,不能应用在Windows上,存量系统运行过程中需要能够识别业务人员当前使用的终端操作系统,若终端操作系统为Windows,则使用旧版本Windows控制,若信创平台为麒麟ARM64、统信UOS中的其中一个,则切换为信创平台。
二、方案实施
系统及浏览器信息如下:
- 操作系统:统信桌面操作系统
- 处理器:兆芯处理器
- 浏览器:奇安信可信浏览器专业版(V1.0.42048.7)
----------------navigator.userAgent------------------
Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/90.0.4430.246 Safari/537.36 Qaxbrowser
----------------navigator.platform------------------
Linux x86_64
- 浏览器:版本 6.0.7(正式版本) (64 位)| 93.0.4577.63(此浏览器基于Chromium开源项目及其他开源软件。)
----------------navigator.userAgent------------------
Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/93.0.4577.63 Safari/537.36 UOS
----------------navigator.platform------------------
Linux x86_64
2.1 User-Agent
其中,User-Agent
是Http协议中的一部分,属于头域的组成部分,User Agent
也简称UA
。用较为普通的一点来说,是一种向访问网站提供你所使用的浏览器类型、操作系统及版本、CPU 类型、浏览器渲染引擎、浏览器语言、浏览器插件等信息的标识。UA字符串在每次浏览器 HTTP 请求时发送到服务器!
浏览器UA 字串的标准格式为:
浏览器标识 (操作系统标识; 加密等级标识; 浏览器语言) 渲染引擎标识 版本信息
例如,信创终端奇安信浏览器的User-Agent:
Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/93.0.4577.63 Safari/537.36 UOS
Mozilla/5.0
:以前用于Netscape浏览器,目前大多数浏览器UA都会带有。X11; Linux x86_64
:代表Linux系统。AppleWebKit/537.36
:浏览器内核[2]。KHTML
:HTML排版引擎。like Gecko
:这不是Geckeo 浏览器,但是运行起来像Geckeo浏览器。Chrome/93.0.4577.63
:Chrome版本号。Safari/537.36
:宣称自己是Safari。UOS
: 统信桌面操作系统。
操作系统标识
FreeBSD
-
X11; FreeBSD (version no.) i386
-
X11; FreeBSD (version no.) AMD64
Linux
-
X11; Linux ppc
-
X11; Linux ppc64
-
X11; Linux i686
-
X11; Linux x86_64
Mac
-
Macintosh; PPC Mac OS X
-
Macintosh; Intel Mac OS X
Solaris
-
X11; SunOS i86pc
-
X11; SunOS sun4u
Windows
-
Windows NT 6.1 对应操作系统 windows 7
-
Windows NT 6.0 对应操作系统 windows vista
-
Windows NT 5.2 对应操作系统 windows 2003
-
Windows NT 5.1 对应操作系统 windows xp
-
Windows NT 5.0 对应操作系统 windows 2000
Windows ME
Windows 98
加密等级标识
-
N: 表示无安全加密
-
I: 表示弱安全加密
-
U: 表示强安全加密
浏览器语言
在首选项 > 常规 > 语言中指定的语言
渲染引擎
浏览器 使用 Presto 渲染引擎,格式为: Presto/版本号
版本信息
显示 浏览器 真实版本信息,格式为: Version/版本号
首先,需要能够识别到当前系统用户所用操作系统类型。可应用如下方法实现:
// 浏览器名称
console.log(navigator.appCodeName);
// 次版本信息
console.log(navigator.appMinorVersion);
// 完整的浏览器名称
console.log(navigator.appName);
// 浏览器版本
console.log(navigator.appVersion);
// 浏览器编译版本
console.log(navigator.buildID);
// 是否启用cookie
console.log(navigator.cookieEnabled);
// 客户端计算机CPU类型
console.log(navigator.cpuClass);
// 浏览器是否启用java
console.log(navigator.javaEnabled());
// 浏览器主语言
console.log(navigator.language);
// 浏览器中注册的MIME类型数组
console.log(navigator.mimeTypes);
// 是否连接到网络
console.log(navigator.onLine);
// 客户端计算机操作系统或者CPU
console.log(navigator.oscpu);
// 浏览器所在的系统平台
console.log(navigator.platform);
// 浏览器中插件信息数组
console.log(navigator.plugins);
// 产品名称
console.log(navigator.product);
// 产品的次要信息
console.log(navigator.productSub);
// 操作系统的语言
console.log(navigator.systemLanguage);
// 浏览器的用户代理字符串
console.log(navigator. userAgent);
// 操作系统默认语言
console.log(navigator.userLanguage);
// 用户个人信息对象
console.log(navigator.userProfile);
// 浏览器品牌
console.log(navigator.vendor);
// 浏览器供应商次要信息
console.log(navigator.vendorSub);