Security面板里为什么提示我的HTTPS页面有混合内容?
我在本地用 HTTPS 启动了一个开发服务器,页面也确实是通过 https://localhost:3000 加载的,但 Chrome DevTools 的 Security 面板一直报“Mixed Content”警告,说有不安全的资源。可我明明没引用任何 HTTP 资源啊!
唯一引入的外部样式是下面这段 CSS,会不会是字体链接的问题?
@import url('http://fonts.googleapis.com/css2?family=Roboto&display=swap');
body {
font-family: 'Roboto', sans-serif;
}
这就是典型的混合内容问题。虽然你的页面是用 HTTPS 加载的,但这段 CSS 试图通过不安全的 HTTP 协议去拉取字体资源。现在的浏览器安全策略很严,HTTPS 页面里包含 HTTP 资源,就会在 Security 面板报警,甚至直接阻断加载。
解决起来很简单,把那个链接的协议头改成 https 就行。Google 的服务器肯定是支持 HTTPS 的。
修改后的代码如下:
下次写 URL 的时候,尽量用协议相对路径或者直接上 HTTPS,省得后面还得排查这种低级错误。