虽然非常标题党,但是是真事。
我在开发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搞得锅)。
有时候,故障就是这么简单,简单得令人发指,令人窒息。这是一个身经百战的程序员的感想。