好吧,我承認這段事件做的工作是和前端的關系比較大,但其實最主要的功能是我們的合作方提供的一個ActiveX控件完成的,而我需要讓我的用戶在瀏覽器中調用這個控件。
ActiveX控件真的是很過時的技術,但不得不承認目前的用途還是比較多,因為要和硬件打交道,這方面我的知識比較欠缺,連搜索的關鍵詞都想不到。
這樣一來,自然而言的就產生了一些限制。
用戶操作系統(tǒng)—— Windows
用戶客戶端—— Internet Explorer
操作系統(tǒng)注冊ActiveX控件
瀏覽器進行相應的安全設置
對,我主要說的就是這第四條,這里滿滿的槽點。
先說解決方案 1. 將網(wǎng)址加入到“受信任的站點列表”中。這一步可以ActiveX控件在瀏覽器中加載并執(zhí)行,但它會在每次打開的時候詢問。 2. 選擇安全等級的自定義,選中“對未標記為可安全執(zhí)行腳本的ActiveX控件初始化并執(zhí)行腳本”的“啟用”項。這一下就不需要詢問了。
首先,當沒有把網(wǎng)站加到“受信任的站點列表”時,我能看到的結果就是功能無法執(zhí)行——問題是如果代碼在我本地的硬盤里,直接右鍵用IE打開是可以執(zhí)行的,而只要一放在服務器上就不行了。網(wǎng)上搜索一下,關于ActiveX的帖子很少,而在這很少的帖子里面有很多遇到這種問題,但通常是自己寫的控件出現(xiàn)的,我對Windows的這項技術完全沒有興趣,也就沒有去研究如何編寫一個控件了。重點是帖子雖然并不少,但都是問道最后也沒有個結果。終于找到一個說到解決方案的,說是要實現(xiàn)一個接口,我心想我這也不是.NET平臺,難不成還用JS給你實現(xiàn)接口?肯定不 可能,最終終于讓我在一個犄角旮旯發(fā)現(xiàn)了這個問題的答案——“受信任站點”,而且這個作者也強調,如果不加入受信任站點,即使在安全自定義里面開啟了上面解決方案的第二步也是不起作用的。
對,現(xiàn)在有了解決方案,但我不理解的是微軟為什么不彈出一個提示告訴我這是這個問題引起的呢?
本地的代碼能執(zhí)行,放在遠端的服務器上就不行,而我的服務器又是運行Nginx的Linux服務器,我很難不把這個問題聯(lián)想到平臺的不兼容上去,甚至想到了在Linux上安裝ActiveX控件——當然這個不是我提出來的,很明顯不可能。或者服務器用Windows平臺的IIS,我甚至用這個方案在我本地也搭了一個IIS服務器,結果還是一樣的,只要是通過網(wǎng)絡協(xié)議訪問就是不行。
最后我都已經(jīng)懷疑這個方案是不是有問題,根本不可能實現(xiàn)時,看到了這個帖子。當時激動的我差點喊出來。