Перейти к содержимому

Известные ограничения

Двойная сборка

⚠️ В случае, если ваши SSR (динамические) страницы ссылаются на статические файлы .js или .css, и любой из этих ресурсов изменяется, вам, возможно, придется запустить команду astro build два раза подряд (Astro-Shield выдаст предупреждающее сообщение, если это потребуется).

Мы можем попытаться улучшить это в будущем, но существуют некоторые технические проблемы, которые затрудняют решение этой задачи элегантным способом.

Отсутствие File Watcher

На данный момент Astro-Shield не предоставляет логику наблюдателя за файлами, которая бы автоматически регенерировала хеши SRI при изменении файлов.

Это означает, что если вы запускаете Astro в режиме разработки (astro dev), вам, возможно, придется вручную запускать astro build, чтобы избежать устаревших хешей SRI, которые могут нарушить работу локальной версии сайта.

Ограничения спецификаций SRI и CSP

Когда скрипт загружается с помощью статического импорта (например, import { foo } from 'https://origin.com/script.js'), а не напрямую включается с помощью тега <script> (например, <script type="module" src="https://origin.com/script.js"></script>), наличие его хеша в директиве script-src CSP недостаточно для того, чтобы браузер принял его (браузер также требует, чтобы вы предоставили информацию, которая связывает хеш с конкретным ресурсом).

Это само по себе не является ограничением Astro-Shield, а скорее ограничением комбинации текущих спецификаций SRI и CSP.

Из-за этого, на данный момент, рекомендуется добавить 'self' в директиву script-src (Astro-Shield делает это за вас).