Asp-fallback и (пользовательские) зависимые скрипты - PullRequest
0 голосов
/ 15 мая 2019

Я использую Asp.Net Core 2.2 и хотел бы загрузить общие библиотеки js из cdn и использовать локальные ресурсы в ситуациях интрасети, когда 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.Я предполагаю, что это потому, что ресурс восстановления после сбоя загружен позже, чем мой сценарий, потому что при вводе $ в приглашении выдается функция ().

Дополнительная информация: Я также получаю ошибки в журнале js о том, что хеш целостности неверен.Это не беспокоит меня (пока), так как резервные библиотеки работают.

Кроме того, требуется очень много времени, чтобы страница заметила, что cdn недоступен и загрузила локальный резервный вариант (почти 2 минуты).Чтобы заблокировать cdn, я добавил временную запись в свой локальный dns-файл (hosts в windows).

Что мне нужно сделать, чтобы мои собственные сценарии работали с резервной версией?

1 Ответ

0 голосов
/ 09 июля 2019

В последний раз, когда я проверял, не было никакого известного решения для этого.enter image description here

Что касается хеша целостности, возможно, это связано с тем, что файлы не являются двоичными.Вы можете обойти эту проверку целостности, если хотите, установив asp-suppress-fallback-целостность в 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>
...