Electron 8多個版本發佈:引入調用棧日誌和可選的HTTP解析選項

最近發佈的Electron 8.0、8.1和8.2做出了重大改進。這些版本的亮點包括:提升了主進程和渲染進程之間通信的性能、對調用棧更好的控制、在打包的Electron應用程序中添加了HTTP解析選項,以及用於提升會話Cookie存儲安全性的新標記useSessionCookies。

Electron 8.0修改了package.json主腳本和頁面腳本之間的進程間通信。V8的序列化結構克隆算法減少了進程間通信所需的時間,而且不會影響兩個進程之間的消息延遲。

Electron 8.0還增加了“–enable-api-filter-logging”命令行開關,以便更好地控制調用棧。這個命令可以開啓desktopCapturerremote API的調用棧日誌。

Electron 8.0還增加了一個timeoutType屬性,可以用來控制Linux和Windows系統通知的持續時間。新API session.downloadURL()取代了webContents.downloadURL(),在通過頁面origin來觸發下載時可避免做安全檢查。

在以前,開發者可以在macOS瀏覽器窗口標題欄上自定義設定紅綠燈的位置。在Electron 8.1,開發者可以通過一對API動態地設置這個屬性。

Electron在內部使用了Node.js,而在Node.js 11.5中,默認的HTTP解析器被替換掉了,影響到了一些使用場景,並導致HTTP頭部解析和有效性驗證更爲嚴格。Electron 8.1引入了“–http-parser=parser”選項,開發者可以切換成其他HTTP解析器。

在之前的Electron版本中,audioMuted屬性對WebViews不起作用。webview.audioMuted = true本來是用來關閉WebViews的聲音的,但卻觸發瞭如下所示的警告。Electron 8.1解決了這個問題。

在最近發佈的Electron版本中,用於發送HTTP/HTTPS請求的net模塊被設計成可以從主進程發送fetch風格的請求。不過這個模塊缺乏安全性支持,不能像fetch請求那樣使用Cookie。這個侷限性會讓黑客和不懷好意的人直接利用Cookie頭部裏的信息。

Electron 8.2爲網絡請求引入了一個新的useSessionCookies標記,可以像fetch請求那樣安全地使用會話Cookie存儲。這個新標誌利用了Chromium的內部Cookie存儲邏輯。

Electron 8.2還爲Webpreferences引入了disableDialog選項,可以像safeDialogs選項那樣禁用對話框,並能夠完全覆蓋safeDialogs的行爲。

Electron 8.2修復了在進程間發送數組可能會發生崩潰的問題。該版本還修復了另一個問題,即修改全局Object prototype可能會導致Electron內部邏輯拋出錯誤。

開發者對調用棧日誌記錄和可替代HTTP解析器給予了積極的響應,不過仍然存在一些問題。setBackground屬性在Electron 8.x中不起作用,而且更新到最新版本後,頁面渲染性能顯著下降。由於remote模塊的安全性問題,開發者希望默認情況下禁用該模塊。在未來,Electron計劃移除進程模型補丁,以便獲得更好的性能、安全性和可維護性。

Electron是一個開源框架,利用了Node.js和Chromium,旨在使用JavaScript、HTML和CSS來構建跨平臺的桌面應用程。Electron採用MIT許可。開發者可加入Electron的GitHub代碼庫成爲貢獻者,貢獻者需要遵守Electron的貢獻者指南行爲準則

原文鏈接

Electron 8 Releases Introduce Caller Stack Logging, HTTP Parsing Alternative

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章