🤖 AI总结
主题
关于Web Serial API在Firefox Nightly中实现及其发展历程。
摘要
Web Serial API登陆Firefox Nightly,使浏览器能控制3D打印机等硬件,Mozilla态度转变源于生态竞争与用户需求。
关键信息
- 1 Web Serial API允许浏览器与串口设备直接交互。
- 2 Firefox Nightly已加入支持,但需手动开启。
- 3 Mozilla从反对到支持,主要因社区需求和竞争压力。
![]()
在这一想法首次被提出整整13年之后,Web Serial API终于登陆了Firefox Nightly——Mozilla浏览器的开发预览版频道。
Web Serial允许浏览器与通过串口进行通信的设备直接交互,涵盖3D打印机、Arduino和ESP32等微控制器,以及ESPHome等智能家居相关服务。此外,它还支持与能够通过USB或蓝牙模拟串口的设备进行通信。
谷歌Chrome早在2021年便已提供Web Serial支持,距离最初讨论开始已过去约八年时间。该API目前也被Edge、Opera、Vivaldi等基于Chromium内核的浏览器所支持。
Firefox Nightly 151.0a1版本似乎在4月13日前后加入了Web Serial支持,不过官方文档尚未发布。用户需要通过菜单手动开启对应的功能标志才能激活该特性。
值得注意的是,就在六年前,Mozilla还曾以安全为由公开反对Web Serial。
Mozilla杰出工程师Martin Thomson在2020年的一个GitHub议题讨论中写道:”我们认为,用户同意并不足以保护提供这种级别能力的接口。串口访问是那个年代的遗留产物,那时物理连接本身就意味着极高的信任度。举例来说,许多设备对任何通过该接口连接的对象开放管理控制权,完全不要求任何形式的身份验证;在我的经验中,这种权限甚至超过了root用户所能拥有的级别。”
大约两年后,经历了一场激烈的社区论坛争论,Mozilla被要求重新审视其立场,Firefox首席技术官Bobby Holley给出了积极回应。到2024年,Holley表示Mozilla”愿意采用与WebMIDI相同的附加组件授权机制来推出Web Serial,前提是我们能够制定出足够清晰易懂的用户授权说明”。
Mozilla并非完全放弃了谨慎态度——它目前仍然反对WebUSB(适用于各类USB设备)和WebHID(适用于键盘、鼠标、视频设备)。然而,这种谨慎态度实际上是将风险从用户身上转嫁给了公司本身——如果用户对通过这些API与设备交互存在足够大的需求,缺乏相应支持只会将用户推向Chrome生态系统,进而使Firefox失去竞争力。
Mozilla并非唯一持保留态度的一方。苹果的WebKit团队同样以”指纹识别、安全性及其他方面的顾虑”为由,反对Web Serial、WebUSB和WebHID,并援引Mozilla关于隐私与安全的论据作为其立场的支撑。
不过,进入2026年,随着用户已普遍接受让智能体访问其计算机,Mozilla也在积极探索将AI功能集成到Firefox中,对于Web Serial的顾虑在整体大局中似乎已显得没那么突出。
Web Serial代码的首次提交发生在今年1月中旬,随着后续问题的逐步修复,更多相关工作预计将持续推进。
Q&A
Q1:Web Serial API是什么,能用来做什么?
A:Web Serial API是一种允许浏览器直接与串口设备通信的Web标准接口。通过它,用户可以在浏览器中控制3D打印机、Arduino、ESP32等微控制器,以及ESPHome等智能家居服务,也支持通过USB或蓝牙模拟串口的设备。目前Chrome在2021年已支持该API,Firefox Nightly近期也加入了这一功能,但仍需手动开启功能标志。
Q2:Firefox为什么之前反对Web Serial,现在又改变态度了?
A:Mozilla此前认为用户同意并不足以保护这类高权限接口,串口连接历史上默认享有极高信任度,很多设备无需验证即可被完全控制,安全风险极大。但随着社区需求增长以及Chrome生态的竞争压力,Firefox CTO Bobby Holley在2024年表示愿意以附加授权机制推出Web Serial,最终该功能在Firefox Nightly中落地。
Q3:苹果的Safari浏览器支持Web Serial API吗?
A:目前苹果的WebKit团队明确反对Web Serial API,同时也反对WebUSB和WebHID,理由是存在指纹识别、安全性及其他方面的顾虑,并援引了Mozilla此前的隐私与安全论据。因此,Safari目前不支持Web Serial API,用户如需使用该功能,需借助Chrome或Firefox(Nightly版)等支持该API的浏览器。