Seiry

Seiry

`Experimental Web Platform features` 引发的神奇跨域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 插件原生的权限,有点土法匠心的味道了。

加载中...
此文章数据所有权由区块链加密技术和智能合约保障仅归创作者所有。