昨天下午,同事老周在会议室投影仪前折腾了二十分钟。他要把一个内部报表系统嵌进公司OA,浏览器却一直弹“此控件已被阻止”。最后他翻出尘封的IE11,关了安全级别,才勉强跑通。散会后他骂了一句:“都什么年代了,还在跟ActiveX搏斗。”
webplugin控件,说白了就是浏览器里跑的一段本地程序。它跟JavaScript不一样——JS是沙箱里的小丑,翻跟头逗你笑,但碰不到你硬盘;控件是拿到钥匙的房客,能读写文件、调用摄像头、跟USB设备聊天。早年间网银、打印、视频会议全靠它。那时候IE是霸主,ActiveX控件满天飞,装一个能用半年,出问题就重装系统。
问题出在“信任”上。控件权限太大,恶意网站塞给你一个假控件,电脑就裸奔了。微软后来加了各种签名验证、安全提示,但用户根本分不清“来自可信发布者”和“来自未知来源”的区别。我见过最离谱的案例,某公司财务部为了用老版U盾,把浏览器的所有安全选项全关掉,结果中了勒索病毒,备份文件被加密,老板脸都绿了。
Chrome和Firefox崛起后,情况更糟。它们默认不加载NPAPI插件,直接掐断了控件的活路。Adobe Flash死的时候大家还伤感了下,但没人替ActiveX哭。现在主流浏览器只支持两种东西:一是WebAssembly,那是编译后的高性能代码,跑在沙箱里但速度快;二是通过本地消息传递的桥接方案,比如用WebSocket跟本机服务通信。后者成了新宠——说白了,浏览器页面发个请求,本机小工具去执行,再把结果传回来。安全边界清晰,权限可控。
可现实很骨感。很多老系统,尤其银行、医院、政务平台,控件代码还是十年前写的。它们依赖IE的私有接口,换个浏览器就罢工。我上周帮朋友处理医保报销,官网明确写着“请使用32位IE浏览器,并下载安装安全控件”。他家里电脑只有Edge,折腾半天装了个IE模式,又遇到ActiveX筛选器捣乱,最后我远程帮他关了“启用保护模式”才通过。这种体验,正常人早摔鼠标了。
有个趋势值得注意:控件正在从“插件下载”变成“本地服务”。比如某物流公司的快递单打印,以前要装一个打印控件,现在他们在用户电脑上装个静默运行的小程序,页面通过localhost端口调它。用户感知不到控件存在,但功能全在。还有的用Electron打包桌面应用,干脆脱离浏览器。这思路聪明——把复杂功能挪到本地,浏览器只做界面,既躲开沙箱限制,又减少安全风险。
不过别高兴太早。本地服务方案需要用户装东西,而且每次更新要单独推送。遇到IT管控严格的企业,装个软件要审批,比装控件还麻烦。有个折中路子是PWA(渐进式Web应用),能离线缓存、调系统通知,但访问串口、读身份证读卡器还是没辙。说到底,凡是要碰硬件底层的活儿,浏览器天生干不了,总得有个“中间人”。
所以我的看法是:webplugin控件没死,只是换了张脸。老ActiveX该淘汰就淘汰,别恋战。新项目尽量走标准API,实在绕不开,就做本地桥接服务。最怕的是那种“既不想维护老代码,又不肯推倒重来”的甲方,最后逼着用户装一堆乱七八糟的兼容插件。技术债迟早要还,控件这玩意儿,越早清理越省心。就像老周说的,跟IE搏斗的时间,够他写三个新接口了。
顶: 98踩: 6






评论专区