起因#
使用 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 插件原生的权限,有点土法匠心的味道了。