拋棄http的API們
這年頭沒有https都沒法開發軟體了,web標準上近幾年的api們清一色地要求https,否則就罷工!它們包括但不限于:
Notification:系統通知
Geolocation:地理資訊
Storage:存盤/快取
PWA:漸進式Web應用
Payment Request:支付
Clipboard:剪貼板
ServiceWorker:守護執行緒
MediaDevices:媒體設備
Crypto:密碼學工具
Generic Sensor:傳感器
Bluetooth:藍牙介面
Authentication:認證
WebXR:虛擬現實
Presentation:螢屏共享
https://developer.mozilla.org/en-US/docs/Web/Security/Secure_Contexts/features_restricted_to_secure_contexts
資訊來源
這些api都不能在http下正常使用,尤其以chrome的要求最為嚴格,必須保證入口檔案和異步資源都是https時才能使用以上的API,否則會出現下面的提示,
可是開發時,本地部署https并沒有那么容易,想讓瀏覽器承認網站的安全性沒有想象中那么簡單,尤其是訪問本地服務器的時候,chrome總是出現紅色的感嘆號,多年來嘗試過以下的方法都失敗了:
用假證書自然不行
給localhost或ip地址頒發自簽名證書被系統拒絕了
修改hosts檔案并安裝證書,瀏覽器不認(chromium有自帶的證書管理器)
調chrome的首選項(chrome://flags/)倒是可以但非常麻煩
有沒有既簡單又穩當,符合一般人思維習慣的辦法呢,網上總是沒有明確的答案,直到前幾天玩VisualSVN Server的時候終于發現了標準的做法,
本地服務器的4種地址
| IP地址 | 域名 | |
| 本地 | 127.0.0.1 | localhost |
| 網路 | 網卡IP | 主機名 |
通過以上4種地址都可以訪問本地服務器,有的機器還可以通過0.0.0.0來訪問,這種地址不被廣泛接受,更多的是作為匹配所有ip的保留地址,每臺電腦自帶的dns服務都會把localhost決議到127.0.0.1,然后指向本機,就是說,127.0.0.1對應的域名是localhost,
如果電腦聯網的話,還可以通過網卡ip來訪問本地,比如192.168.0.1,那它對應的域名是什么呢?不用查dns快取,只要打開你的電腦名片就能看到了,比如Windows電腦在【控制面板/系統和安全/系統】中可以查看名片:
(我不是來秀記憶體的)
其中的計算機名就是你的主機域名,能夠決議成你的網卡ip,以我的電腦為例,隨便開一個http服務,瀏覽器中可以直接訪問 http://desktop-oakgfsr/ 了,
如何上https呢?自然不能用假證書了,但也沒必要花錢去找CA頒發真證書,等等,既不用真證書也不用假證書???誤會了,我們用真證書,只不過是用openssl自簽名的證書,方便起見,我們不用openssl做實驗了,在網上隨便找一個在線ssl證書生成器就好了,
按照要求輸入域名以后,生成器很快就幫你制作好證書和私鑰:
desktop-oakgfsr.cert:自簽名證書
desktop-oakgfsr.key:證書的私鑰
安裝自簽名證書
如果你對https的原理不是很明白的話,推薦看這篇文章:《HTTPS與P=NP問題卍解》,里面把https原理嚼碎了送到你嘴里,接下來要讓作業系統或瀏覽器信任這個證書:雙擊打開證書,點擊安裝,
證書匯入位置選擇【受信任的根證書頒發機構】即可,
打開【管理用戶證書】就能看到剛安裝的證書了:
當然也可以選擇在這里匯入證書,效果是一樣的,最后我們用這個證書和剛剛的私鑰開一個本地web服務器,監聽443埠,瀏覽器訪問 https://desktop-oakgfsr/ ,就成功了,
如果發現在chrome上沒有立刻生效,可能需要重啟瀏覽器,甚至重新登錄Google賬號才行,自此,一眾Web最新API都能使用啦,
<完>
轉載請註明出處,本文鏈接:https://www.uj5u.com/qianduan/111355.html
標籤:其他
