Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   Какая разница между одинаковыми, на первый взгляд, версиями jquery? (https://javascript.ru/forum/misc/84694-kakaya-raznica-mezhdu-odinakovymi-na-pervyjj-vzglyad-versiyami-jquery.html)

javascript_pupil 17.11.2022 22:13

Какая разница между одинаковыми, на первый взгляд, версиями 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, но с первым вариантом скрипт работает, а со вторым - отказывается. Чем отличаются эти версии? Поясните, пожалуйста!

рони 17.11.2022 22:23

javascript_pupil,
либо проблемы с доступом https://cdn.jsdelivr.net/, либо integrity не соответствует

javascript_pupil 17.11.2022 22:35

Вряд ли проблемы с доступом: оба файла открываются и внешне выглядят одинаковыми (насколько их можно сравнить визуально). А вот с integrity вопрос: может проблема в sha256 и sha384? Это где-то в настройках сервера надо рыть?

рони 18.11.2022 00:44

javascript_pupil,
уберите этот атрибут для начала.

javascript_pupil 18.11.2022 11:48

Без атрибута integrity всё работает норм. С атрибутом работает только в IE11, в остальных браузерах - тишина.

voraa 18.11.2022 11:52

Цитата:

Сообщение от javascript_pupil
С атрибутом работает только в IE11

Потому, что ИЕ не понимает этого атрибута и просто отбрасывает его.

javascript_pupil 18.11.2022 18:16

Это всё прекрасно. Мне то что делать? Есть вариант использовать 2-й HTML код или нет? Атрибут integrity вроде бы как нужен для безопасности. Но он есть и в первом варианте с sha256. В чём проблема с sha384?

Белый шум 18.11.2022 18:27

javascript_pupil,
https://www.srihash.org/

voraa 18.11.2022 18:47

Долгое гугленье привело меня сюда
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, не знаю, что это значит, но какая то разница есть

рони 18.11.2022 19:58

voraa,
slim -- нет ajax and effects modules

voraa 18.11.2022 20:57

Цитата:

Сообщение от рони
slim -- нет ajax and effects modules

Ну файлы то разные совсем, и хеш должен быть другой.

javascript_pupil 18.11.2022 21:04

В моем случае slim точно не работает - проверено. Остальное буду изучать. Конечно самое простое решение - использовать первый вариант, но интересно же стало! :write:

voraa 18.11.2022 21:19

Скорее все хеш код другой должен быть. Этот для slim. Где вы его взяли?

рони 18.11.2022 21:39

Цитата:

Сообщение от voraa
хеш код другой должен быть.

генерация на https://www.srihash.org/
выдаёт именно такой
<script src="https://code.jquery.com/jquery-3.5.1.min.js" integrity="sha256-9/aliU8dGd2tb6OSsuzixeV4y/faTqgFtohetphbbj0=" crossorigin="anonymous"></script>

voraa 18.11.2022 22:01

Цитата:

Сообщение от рони
выдаёт именно такой

Так там не работает другой, как я понял
<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>

Aetae 18.11.2022 22:25

javascript_pupil, на всякий случай, если ты ещё не понял:
Атрибут "integrity" - это не "какие-то магические буковки", это чексумма конкретного файла указанного в src. За исключением супер редких коллизий, каждому существующему файлу может соответствовать только одна конкретная чексумма по конкретному алгориму(sha384, sha256 и т.р.). Для чего это нужно? Для того чтобы гарантировать, что файл не изменился, после того как ты его проверил и подключил на сайт: т.е. если внезапно cdn.jsdelivr.net взломают и начнут отдавать по этому адресу вместо jquery какой-нить вирус - браузер просто откажется его загружать, т.к. чексумма не будет соответствовать содержимому скрипта.

Теперь к причине твоей проблемы: ты, очевидно, взял откуда-то готовый кусок кода для загрузки jquery.slim после чего просто убрал из src slim. Т.е. чексумма осталась от предыдущего файла и не соответствует новому - ничего не работает.

javascript_pupil 18.11.2022 22:38

Цитата:

Сообщение от Aetae
если ты ещё не понял

Уже понял из предыдущих ответов, но всё равно спасибо за разъяснения. :)

Цитата:

Сообщение от Aetae
просто убрал из src slim

Именно так и получилось! Ну зато теперь абсолютно ясно зачем всё это. :) Осталось понять что лучше: использовать первый вариант кода или найти где-то правильный integrity для этого файла.

Aetae 18.11.2022 22:44

javascript_pupil, ты можешь просто скопировать integrity из первого. По логике вещей они должны быть идентичны.
Также ты можешь сгенерировать новый с помощь сервиса предложенного выше или сходить на сайт jquery.com и забрать официальную чексумму.

javascript_pupil 18.11.2022 22:45

Получилось! :dance: Всем спасибо! :victory:


Часовой пояс GMT +3, время: 10:31.