Как исправить «это нарушает следующую директиву политики безопасности контента:« default-src 'self' », когда я использую datalist?
Когда я использую datalist с Content-Security-Policy "content="default-src 'self'", он выдает ошибку:" Отказано в применении встроенного стиля, поскольку он нарушает следующую директиву политики безопасности контента: "default-src 'self'". Для включения встроенного выполнения требуется ключевое слово 'unsafe-inline', хэш ('sha256-pIL...') или одноразовый номер ('nonce -...'). Обратите внимание, что хэши не применяются к обработчикам событий, атрибутам стиля и навигации javascript:, если не указано ключевое слово 'unsafe-hashes'. Также обратите внимание, что 'style-src' не был явно установлен, поэтому 'default-src' используется в качестве запасного варианта. ".
Список данных работает, как я надеюсь, в браузере, однако сообщение об ошибке раздражает. Поскольку я надеюсь сохранить максимальную безопасность, я не хочу менять Content-Security-Policy на unsafe-inline. Не могли бы вы мне подсказать, как это исправить?
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<meta http-equiv="Content-Security-Policy" content="default-src 'self'">
</head>
<body>
<label for="animalList" class="form-label">animal</label>
<input class="form-control" list="animalOptions" id="animalList" placeholder="">
<datalist id="animalOptions">
<option value="dog">
<option value="cat">
</datalist>
</body>
</html>
2 ответа
Чтобы избавиться от этой ошибки, просто добавьте в свой CSP:
style-src-attr 'sha256-pILX+5FGCpLRHvNBgtABIdSMmytrYudGxJBUYXY1t0s=' 'unsafe-hashes';
Эта директива работает только в браузерах на движке Chromium и применяется к атрибуту style= . Другие браузеры будут следовать правилам. Для
<style>...</style>
блокирует Chrome
style-src
правила тоже.
Похоже, это новая ошибка в браузерах на основе хрома (включая Edge). Его нет в Firefox v89.