Chrome 18 Dev/Canary только что был выпущен, и content_security_policy
потребуется в манифесте для определенных расширений.
Я пытаюсь заставить CSP работать для встроенных скриптов, но я не знаю, что я делаю что-то неправильно или это ошибка Chrome 18.
manifest.json:
{
"name": "CSP Test",
"version": "1.0",
"manifest_version": 2,
"options_page": "test.html",
"content_security_policy": "default-src 'unsafe-inline'"
}
test.html:
<html><head>
<script type="text/javascript">
alert("hello");
</script>
</head></html>
В Chrome 18 это распакованное расширение не загружается, отображая сообщение об ошибке:
Если я изменил значение 'unsafe-inline'
на 'self'
, расширение загрузилось нормально, но alert()
не работает, а консоль страницы параметров содержит ошибку:
Отказано в выполнении встроенного script из-за политики безопасности контента.
В Chrome 16, используя 'unsafe-inline'
, добавляет прекрасную нагрузку и alert()
. Однако в Chrome 16 замена 'unsafe-inline'
на 'foo'
позволяет загружать расширение, но, конечно же, не позволяет alert()
работать, поэтому, возможно, Chrome 18 более строг, чем 16, но...
Является ли default-src 'unsafe-inline'
фактически недействительным, или это ошибка? Какое значение CSP можно использовать для работы alert()
в Chrome 18?
В соответствии с принятым ответом ниже встроенные скрипты больше не работают в расширениях в Chrome 18. alert()
необходимо поместить в свой собственный файл JavaScript.