Azure中的CDN css和JS,https和版本无效

时间:2016-06-02 12:49:26

标签: azure asp.net-core tag-helpers azure-cdn

我正在使用ASP.NET Core。我为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

这是我浏览器中的错误:

  

混合内容:页面位于   'https://www.myweb.com'已加载   通过HTTPS,但请求一个不安全的样式表   'http://www.myweb.com/dist/web.bundle.js'。这个要求有   被封锁了;内容必须通过HTTPS提供。

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

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

谢谢!

1 个答案:

答案 0 :(得分:1)

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

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

修改

既然我在家,我也可以回复你问题的第二部分:P

我怀疑,asp-append-version标记帮助程序仅用于相对URL,这是有道理的。将它用于CDN毫无意义,因为你的应用程序必须每次都重新下载它的hashsum以将其添加到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;
}