Seiry

Seiry

`實驗性網頁平台功能` 引發的神奇跨域bug `PreflightMissingAllowPrivateNetwork`

image

起因#

使用 obsidian 已經蠻長時間了,今天刷 twitter 的時候,有人推薦了一個 chrome 擴展,https://chrome.google.com/webstore/detail/obsidian-web/edoacekkjanmingkbkgjndndibhkegad, 可以配合 obsidian 的 api 插件使用。

然後我在配置妥當之後,一直遇到一個神奇錯誤。

Could not connect to Obsidian! Make sure Obsidian is running and that the Obsidian Local REST API plugin is enabled.

image

而在插件配置裡,已經是一個可愛的綠色小盾牌了。

image

於是有了在頁面裡,(目標頁面裡),devtool 查看。發現神奇錯誤

Cross-Origin Resource Sharing error: PreflightMissingAllowPrivateNetwork

直接查詢,不太能說是無果,只能說不太有果。

https://chromedevtools.github.io/devtools-protocol/tot/Network/#:~:text=PreflightMissingAllowPrivateNetwork
devtool 的錯誤碼並未詳細解釋;

https://developer.chrome.com/blog/private-network-access-update/
一篇無限 delay 的博文

image

配合 gpt 的回答結果

image

猜測這是一個實驗中的特性。

背鍋#

於是聯想到最近一直在日小米的溫濕度計 2,https://pvvx.github.io/ATC_MiThermometer/TelinkMiFlasher.html , repo https://github.com/pvvx/ATC_MiThermometer , 明確有提到 #enable-experimental-web-platform-features 這個 flag,於是關閉。

解決。

所以這玩意,不是 experimental, 是 delayed features 。

寫在後邊#

這個問題的原因,其實是多樣的。

首先,是多年來,chrome 積攢的新 feature,存留的有爭議的 feature,各種 break change,已經堆積如山。特別是在當前的經濟環境下,engineer 流動加劇,Google 很難有餘力在繼續給馬桶沖水。所以也正如很多人的悲觀觀點,處於屎山風口浪尖裡的 chrome 正在成為下一個 IE。

其次,obsidian web 插件的 js 實例,是通過 directly inject 到目標的 webpage 中的。既不是 userscript 類技術的高權限腳本,也不是 chrome 插件原生的權限,有點土法匠心的味道了。

載入中......
此文章數據所有權由區塊鏈加密技術和智能合約保障僅歸創作者所有。