【问题标题】:Asp-fallback and (custom) dependend scriptsAsp-fallback 和(自定义)依赖脚本
【发布时间】:2019-10-02 19:05:01
【问题描述】:

我正在使用 Asp.Net Core 2.2,想从 cdn 加载常用的 js 库,并在无法访问 cdn 的内网情况下回退到本地资源。

回退本身有效,但我有使用 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 中的主机)中添加了一个临时条目。

我必须做些什么才能使我自己的脚本与后备一起工作?

【问题讨论】:

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


    【解决方案1】:

    我上次检查时,确实没有已知的解决方案。

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

    【讨论】:

    • 感谢发帖。自创建此问题以来,我添加了 asp-suppress-fallback-integrity="true" 。主要问题仍然存在。我不能使用cdn,因为无法访问cdn,整个页面都会失败。
    • 我将研究解决此问题的其他方法。如果没有 asp-tag-helper,应该有一种方法可以解决使用 cdn 和依赖本地资源的要求。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-05-21
    • 1970-01-01
    • 1970-01-01
    • 2017-05-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多