起因#
使用 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.
而在插件配置裡,已經是一個可愛的綠色小盾牌了。
於是有了在頁面裡,(目標頁面裡),devtool 查看。發現神奇錯誤
Cross-Origin Resource Sharing error: PreflightMissingAllowPrivateNetwork
search#
直接查詢,不太能說是無果,只能說不太有果。
https://chromedevtools.github.io/devtools-protocol/tot/Network/#:~:text=PreflightMissingAllowPrivateNetwork 。
devtool 的錯誤碼並未詳細解釋;
https://developer.chrome.com/blog/private-network-access-update/
一篇無限 delay 的博文
配合 gpt 的回答結果
猜測這是一個實驗中的特性。
背鍋#
於是聯想到最近一直在日小米的溫濕度計 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 插件原生的權限,有點土法匠心的味道了。