Hugo - 无法在资源的 'integrity' 属性中找到有效摘要 - 资源已被阻止 - 主机位于 Github

Hugo - Failed to find a valid digest in the 'integrity' attribute for resource - The resource has been blocked - Host on Github

问题:

我正在尝试 deploy/host 我的 Hugo 站点 GitHub。

当我 运行 使用 hugo server 命令在本地 (http://localhost:1313/) 站点时,该站点呈现完美,但当我将其托管在 GitHub 上时,它无法正确呈现.

最初,我认为问题出在 GitHub 上的部署,但后来我打开了 index.html 文件,该文件是由 public 中的 hugo 命令生成的文件夹,我注意到它在那里也不起作用。所以我假设 index.html 文件中的 css 连接有问题:

href=https://username.github.io/assets/css/stylesheet.min.06dcab22093156f8a08872c23ce7ee2a8234185d3c84741f7b0ce0c78df475b8.css

但这似乎是正确的 link。

安装过程和研究工作:

为了首先创建 hugo 站点,我遵循了 quick-start tutorial and in order to apply the theme of my choice, I followed the official installation process described here by PaperMod. Finally, to host it on GitHub, I followed the recommended instructions

我的 config.yml file has the recommended structure as the example file 出现在官方存储库中。

除了提交 issue on the GitHub repository of the theme developer which I didn't get a clear answer except for a correction he pointed out which didn't work, I looked at a couple of articles like this, this and this 但其中 none 有效。

我正在使用 windows 10,我的 Hugo 版本是 v0.78.2/extended windows/amd64

更新:

我检查了 html 文件的控制台,发现了这三个错误:

(index):1 Failed to find a valid digest in the 'integrity' attribute for resource 'https://username.github.io/assets/css/stylesheet.min.5846effdc39e688e1bf07acc7a47123f949ae43a8b0e776fa1a2a626406cc602.css' with computed SHA-256 integrity 'J6YEe5hjKuk/TENUR7jEMr6VNR4lwN8iVpSGj1g8MU4='. The resource has been blocked.

DevTools failed to load SourceMap: Could not load content for chrome-extension://fheoggkfdfchfphceeifdbepaooicaho/sourceMap/chrome/iframe_handler.map: HTTP error: status code 404, net::ERR_UNKNOWN_URL_SCHEME

DevTools failed to load SourceMap: Could not load content for chrome-extension://fheoggkfdfchfphceeifdbepaooicaho/sourceMap/chrome/content.map: HTTP error: status code 404, net::ERR_UNKNOWN_URL_SCHEME

解决方法:

我替换了:

integrity="J6YEe5hjKuk/TENUR7jEMr6VNR4lwN8iVpSGj1g8MU4="

与:

integrity=""

每个 index.html 文件的 css 标签中。

虽然我找到了自动执行此操作并首先跳过错误的解决方案,但它确实有效。

解决方案(!) - 更新:

看起来assets文件夹下的head.html文件结构如下:

 <!-- Styles --> 
 {{- $stylesheet := (resources.Match "css/*.css") | resources.Concat "assets/css/stylesheet.css" | minify | fingerprint -}} 
 <link href="{{ $stylesheet.Permalink }}" integrity="{{ $stylesheet.Data.Integrity }}" rel="preload stylesheet" 
     as="style"> 

我用 integrity="" 替换了 integrity="{{ $stylesheet.Data.Integrity }}" 并且成功了!它会自动生成 index.html 文件,这些文件是用空的 integrity 构建的,因此没有错误并且可以完美运行。

如果您使用 Cloudflare 作为您域的 DNS,我找到了解决方案。

只需清理 Cloudflare CDN 缓存或将其关闭以防止再次发生。

https://github.com/lxndrblz/anatole/issues/114#issuecomment-828750909

感谢@Samuel Three 的回答,我开始更仔细地查看我的 Cloudflare 配置。

我发现我为 JavaScript 和 CSS 打开了 Cloudflare 的“自动缩小”功能(在速度/优化下)。禁用这些(并刷新 Cloudflare 缓存一次)为我解决了这个问题,并且从那时起我能够让 Cloudflare 的缓存保持启用状态。

当然,如果 Cloudflare 以任何方式修改 JS 或 CSS 文件,计算出的 SHA 完整性将不再正确。