Подтвердить что ты не робот

Когда JavaScript должен быть gzipped?

Я заметил, что некоторые сайты с большими именами используют сжатый JavaScript и некоторые, которые не сжаты, на одной странице.

Я также читал, что JavaScript не должен быть gzipped при обслуживании через https. Чтобы поддержать это, я заметил, что при обслуживании jQuery из Google CDN они обслуживают только сжатый HTTP, а не HTTPS.

например. первый сжимается; второй - нет.

http://ajax.googleapis.com/ajax/libs/jquery/2.2.0/jquery.min.js"
https://ajax.googleapis.com/ajax/libs/jquery/2.2.0/jquery.min.js"

Однако, если вы вытащите jQuery из Microsoft CDN поверх https:

https://ajax.aspnetcdn.com/ajax/jquery.mobile/1.3.2/jquery.mobile-1.3.2.min.js

он обслуживается сжатым.

Примеры больших сайтов, которые служат как сжатыми, так и несжатыми при одной и той же загрузке страницы, независимо от HTTPS или нет:

Итак, мой вопрос: когда я должен gzip мой JavaScript и когда мне это не нужно?

Заметьте, вопрос в Можете ли вы использовать gzip через SSL? И Connection: Keep-Alive headers несколько схожи, так как ответы там объясняют, при каких обстоятельствах сжатие НЕ должно использоваться под HTTPS. Однако, что только половина моего вопроса - некоторые сайты HTTP (не HTTPS) также сжимают некоторые, но не все их ресурсы javascript, например. описанный выше пример Stackoverflow.

4b9b3361

Ответ 1

Первоначально я думал, что это имеет отношение к старой поддержке браузера, так как IE6 и Netscape4 имеют ошибки при обработке сжатых js файлов. Но это не имело никакого отношения к HTTPS. Это было сжатие, и файлы конфигурации сервера уже давно имеют условные настройки, чтобы не сжимать js файлы, если обнаружен более старый браузер.

После некоторого поиска в Google выясняется, что проблема не в js. Это с HTTPS. Вы не должны подавать gzip-контент по HTTPS/SPDY/HTTP2. Есть две атаки, которые возможны при обслуживании gzipped-содержимого через HTTPS: CRIME и BREACH.

В обеих атаках CRIME и BREACH используется тот факт, что данные gzipping уменьшают их размер статистически предсказуемыми способами. Обе атаки могут извлекать файлы cookie, которые в зависимости от того, как работает ваш сайт, позволяют злоумышленнику войти в учетные записи пользователей.

Итак, из вашего наблюдения мы можем заключить, что Google CD правильно настроен.

Однако обратите внимание, как работают оба атак: их конечной целью является захват сеанса. Если вы загружаете файл js/css/gif с сервера Microsoft, ваш браузер не будет отправлять файлы cookie вашего сайта вместе с запросом (политика одного происхождения). Таким образом, Microsoft может быть прощена за обслуживание сжатых js файлов на HTTPS.

Это означает, что вы можете обслуживать сжатые файлы через HTTPS! Вам просто нужно убедиться, что эти файлы поступают из другого домена, чтобы предотвратить атаки CRIME и BREACH из-за кражи ваших файлов cookie.