ASP后备和(自定义)依赖脚本

时间:2019-05-15 15:15:59

标签: javascript asp.net-core asp.net-core-2.2 fallback

我使用的是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主机)中添加了一个临时条目。

要使我自己的脚本与后备一起使用,我该怎么办?

1 个答案:

答案 0 :(得分:0)

最后我检查了一下,实际上没有已知的解决方案。 enter image description here

关于完整性哈希不正确,这可能是由于文件不是二进制相等。通过将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>