Какая разница между одинаковыми, на первый взгляд, версиями jquery?
Есть два варианта использования jquery:
<script src="https://code.jquery.com/jquery-3.5.1.min.js" integrity="sha256-9/aliU8dGd2tb6OSsuzixeV4y/faTqgFtohetphbbj0=" crossorigin="anonymous"></script> и <script src="https://cdn.jsdelivr.net/npm/jquery@3.5.1/dist/jquery.min.js" integrity="sha384-DfXdz2htPH0lsSSs5nCTpuj/zy4C+OGpamoFVy38MVBnE+IbbVYUew+OrCXaRkfj" crossorigin="anonymous"></script> Версии вроде бы одинаковые - 3.5.1, но с первым вариантом скрипт работает, а со вторым - отказывается. Чем отличаются эти версии? Поясните, пожалуйста! |
javascript_pupil,
либо проблемы с доступом https://cdn.jsdelivr.net/, либо integrity не соответствует |
Вряд ли проблемы с доступом: оба файла открываются и внешне выглядят одинаковыми (насколько их можно сравнить визуально). А вот с integrity вопрос: может проблема в sha256 и sha384? Это где-то в настройках сервера надо рыть?
|
javascript_pupil,
уберите этот атрибут для начала. |
Без атрибута integrity всё работает норм. С атрибутом работает только в IE11, в остальных браузерах - тишина.
|
Цитата:
|
Это всё прекрасно. Мне то что делать? Есть вариант использовать 2-й HTML код или нет? Атрибут integrity вроде бы как нужен для безопасности. Но он есть и в первом варианте с sha256. В чём проблема с sha384?
|
javascript_pupil,
https://www.srihash.org/ |
Долгое гугленье привело меня сюда
https://programbox.ru/2022/08/31/%D0...8%D1%80%D0%B8/ Там пример кода (сюдя по всему jquery вызывается без проблем). Но строка вызова такая <script src="https://code.jquery.com/jquery-3.5.1.slim.min.js" integrity="sha384-DfXdz2htPH0lsSSs5nCTpuj/zy4C OGpamoFVy38MVBnE IbbVYUew OrCXaRkfj" crossorigin="anonymous"></script> хеш вроде совпадает с вашим (за исключением замен ' ' на '+') Но файл jquery-3.5.1.slim.min.js Совсем не знаток jquery, не знаю, что это значит, но какая то разница есть |
voraa,
slim -- нет ajax and effects modules |
Цитата:
|
В моем случае slim точно не работает - проверено. Остальное буду изучать. Конечно самое простое решение - использовать первый вариант, но интересно же стало! :write:
|
Скорее все хеш код другой должен быть. Этот для slim. Где вы его взяли?
|
Цитата:
выдаёт именно такой <script src="https://code.jquery.com/jquery-3.5.1.min.js" integrity="sha256-9/aliU8dGd2tb6OSsuzixeV4y/faTqgFtohetphbbj0=" crossorigin="anonymous"></script> |
Цитата:
<script src="https://cdn.jsdelivr.net/npm/jquery@3.5.1/dist/jquery.min.js" integrity="sha384-DfXdz2htPH0lsSSs5nCTpuj/zy4C+OGpamoFVy38MVBnE+IbbVYUew+OrCXaRkfj" crossorigin="anonymous"></script> А этот хеш я находил для slim и именно его выдал https://www.srihash.org/ <script src="https://cdn.jsdelivr.net/npm/jquery@3.5.1/dist/jquery.slim.min.js" integrity="sha384-DfXdz2htPH0lsSSs5nCTpuj/zy4C+OGpamoFVy38MVBnE+IbbVYUew+OrCXaRkfj" crossorigin="anonymous"></script> А без slim должен быть <script src="https://cdn.jsdelivr.net/npm/jquery@3.5.1/dist/jquery.min.js" integrity="sha384-ZvpUoO/+PpLXR1lu4jmpXWu80pZlYUAfxl5NsBMWOEPSjUn/6Z/hRTt8+pR6L4N2" crossorigin="anonymous"></script> |
javascript_pupil, на всякий случай, если ты ещё не понял:
Атрибут "integrity" - это не "какие-то магические буковки", это чексумма конкретного файла указанного в src. За исключением супер редких коллизий, каждому существующему файлу может соответствовать только одна конкретная чексумма по конкретному алгориму(sha384, sha256 и т.р.). Для чего это нужно? Для того чтобы гарантировать, что файл не изменился, после того как ты его проверил и подключил на сайт: т.е. если внезапно cdn.jsdelivr.net взломают и начнут отдавать по этому адресу вместо jquery какой-нить вирус - браузер просто откажется его загружать, т.к. чексумма не будет соответствовать содержимому скрипта. Теперь к причине твоей проблемы: ты, очевидно, взял откуда-то готовый кусок кода для загрузки jquery.slim после чего просто убрал из src slim. Т.е. чексумма осталась от предыдущего файла и не соответствует новому - ничего не работает. |
Цитата:
Цитата:
|
javascript_pupil, ты можешь просто скопировать integrity из первого. По логике вещей они должны быть идентичны.
Также ты можешь сгенерировать новый с помощь сервиса предложенного выше или сходить на сайт jquery.com и забрать официальную чексумму. |
Получилось! :dance: Всем спасибо! :victory:
|
Часовой пояс GMT +3, время: 10:31. |