TL; DR
My Pelican blog通过HTTPS提供,但由于混合内容"未加载CSS,即使它们在页面源中显示为HTTPS。
我在GitHub页面上有一个Pelican博客。我有一个自定义域的CNAME记录,指向此博客。
我尝试使用HTTPS来实现此博客的服务,这是可能的with CloudFlare(GitHub支持告诉我它是目前唯一的解决方案)。
按照指示设置所有内容后,我可以安全地访问我的博客,但CSS未加载,因为它们被指示为混合内容。
但是,当我查看页面源代码时,所有CSS都应该使用HTTPS提供(因为它包含在协议相对URL中):
<head>
<meta charset="utf-8">
...
<link href="//nonatomiclabs.github.io/theme/css/ipython.css" rel="stylesheet">
<link href="//nonatomiclabs.github.io/theme/css/bootstrap.min.css" rel="stylesheet">
<link href="//maxcdn.bootstrapcdn.com/font-awesome/4.1.0/css/font-awesome.min.css" rel="stylesheet">
<link href="//nonatomiclabs.github.io/theme/css/local.css" rel="stylesheet">
<link href="//nonatomiclabs.github.io/theme/css/pygments.css" rel="stylesheet">
</head>
我尝试将Pelican SITEURL
变量设置为//nonatomiclabs.github.io
和https://nonatomiclabs.github.io
,这不会改变任何内容(因此问题不在于使用协议相对URL)。
CloudFlare还有一个&#34;自动HTTPS重写&#34;功能应该摆脱/减少混合内容问题,但在我的情况下没有帮助。
如果需要查看代码:
source
分支包含Pelican源master
分支包含已发布的网站答案 0 :(得分:3)
您的问题的答案:
很可能并非浏览器不尊重HTTPS网址,而是域名重定向会导致未加密的HTTP链接。
GitHub页面,CloudFlare和相关域重定向的某些组合很可能是问题的原因。
可能的解决方案如下。
首先,尝试在HTML内使用https:
明确预设静态资产链接,而不是依赖SITEURL
设置,看看是否有任何变化。
其次,唯一失败的资源是那些以https://nonatomiclabs.github.io开头的资源 - 似乎对该域的请求被重定向到https://www.nonatomiclabs.com,并且该重定向可能是原因这个问题。尝试使用不重定向的域。例如:
<link href="https://www.nonatomiclabs.com/theme/css/local.css" rel="stylesheet">
[...]
对于我的个人Justin Mayer网站的价值,我的base.html模板的CSS链接与yours类似。我在我的publishconf.py设置文件中将SITEURL
设置为https://justinmayer.com,结果输出包含不产生混合内容警告的正确的完全限定链接(即非协议相关链接)
除此之外,protocol-relative URLs are considered to be an anti-pattern,因为它们在无处不在的TLS世界中基本上已经过时,特别是在即将到来的7月Google Chrome 68 marks all unencrypted HTTP requests as insecure时。)
另一方面,有迹象表明GitHub Pages might soon support HTTPS,因此您最终可以通过HTTPS在没有CloudFlare的情况下为您的网站提供服务。