Azure 中的 CDN css 和 JS,https 和版本不起作用

CDN css and JS in Azure with https and version not working

我正在使用 ASP.NET 核心。我已经为 CSS 和 JS 文件配置了 CDN。

这是我 HTML 中 TagHelper 中的代码:

<script src="https://mycdn.azureedge.net/dist/web.bundle.js"
                asp-append-version="true"
                asp-fallback-src="~/dist/web.bundle.js"
                asp-fallback-test="window.jQuery">
</script> 

我的问题是重定向在悬停 http 时完成,我需要 https.

这是我浏览器中的错误:

Mixed Content: The page at 'https://www.myweb.com' was loaded over HTTPS, but requested an insecure stylesheet 'http://www.myweb.com/dist/web.bundle.js'. This request has been blocked; the content must be served over HTTPS.

另一件事是我的 CSS 和 JS 没有附加版本参数。

<script src="https://mycdn.azureedge.net/dist/web.bundle.js"></script>

谢谢!!

链接到 CDN 上的外部文件时不要对方案进行编码。

而不是 src="https://mycdn.azureedge.net/dist/web.bundle.js" 使用 src="//mycdn.azureedge.net/dist/web.bundle.js"。然后浏览器将使用当前方案,https 或 http,具体取决于使用的方案。

编辑

现在我回家了,我也可以回答你问题的第二部分了:P

正如我所怀疑的,asp-append-version 标签助手仅适用于相对 urls,这是有道理的。将它用于 CDN 没有什么意义,因为您的应用程序每次都必须下载它以重新计算它的哈希值以将其添加到 url(版本是根据文件内容计算的,每次文件更改时,版本更改,浏览器被迫获取新版本)。

您可以在 GitHub here 上看到它。

Uri uri;
if (Uri.TryCreate(resolvedPath, UriKind.Absolute, out uri) && !uri.IsFile)
{
    // Don't append version if the path is absolute.
    return path;
}