Известные ограничения
Двойная сборка
⚠️ В случае, если ваши 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 делает это за вас).