我使用的是Asp.Net Core 2.2,想从CDN加载常见的js库,并在无法访问CDN的Intranet情况下回退到本地资源。
后备本身可以工作,但是我有一些自定义脚本,它们使用jquery并在cdn资源失败时失败,尽管jquery是从本地源加载的。 这是我使用的脚本标签:
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"
asp-fallback-src="~/lib/jquery/dist/jquery.min.js"
asp-fallback-test="window.jQuery"
crossorigin="anonymous"
integrity="sha256-FgpCb/KJQlLNfOu91ta32o/NMZxltwRo8QtmkMRdAu8=">
</script>
<script src="~/js/myScript.js" asp-append-version="true"></script>
我的脚本失败,并显示ReferenceError: $ is not defined
。我认为这是因为故障回复资源的加载晚于我的脚本,因为在提示符下键入$会产生function()。
其他信息: 我还在js日志中收到错误,指出完整性哈希不正确。因为后备库可以工作,所以这还没有打扰我。
该页面还需要很长时间才能注意到CDN不可访问并加载了本地回退(将近2分钟)。 为了阻止CDN,我在本地dns文件(Windows主机)中添加了一个临时条目。
要使我自己的脚本与后备一起使用,我该怎么办?
答案 0 :(得分:0)
关于完整性哈希不正确,这可能是由于文件不是二进制相等。通过将asp-suppress-fallback-integrity设置为true,可以绕过完整性检查。
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"
asp-fallback-src="~/lib/jquery/dist/jquery.min.js"
asp-fallback-test="window.jQuery"
crossorigin="anonymous"
integrity="sha256-FgpCb/KJQlLNfOu91ta32o/NMZxltwRo8QtmkMRdAu8="
asp-suppress-fallback-integrity="true">
</script>