记一次因非80端口发生的惨案

虽然非常标题党,但是是真事。

我在开发Quasar应用的时候,需要引入第三方登录模块,需要认证域名才能使用,因此使用了本地hosts域名。引入了之后,发现没有显示,遂F12检查,发现这样一个提示:

Refused to display 'xxxxx(这是url)' in a frame because an ancestor violates the following Content Security Policy directive: "frame-ancestors https://exmaple.com".

于是查找相关资料,并未发现一样的情况,就在我打算破罐子破摔的时候,突然注意到最后一点:frame-ancestors https://exmaple.com

难道是因为这个URL没带端口的原因?

于是,我又开始了艰辛的反代之路。在搞定Apache所有反代的破事之后,重新打开80端口的链接,完全OK。

虽然我描述的过程非常的短,但是足足花了我40分钟去排查,最后发现是浏览器的安全限制。

这个故事告诉我们:凡是跟跨域有关的,先仔细看URL,再看看是不是触发了浏览器的安全限制,最后再考虑是不是跨域配置有问题。iframe也不例外(因为这次就是iframe和js搞得锅)。

有时候,故障就是这么简单,简单得令人发指,令人窒息。这是一个身经百战的程序员的感想。

发表评论