Почему доставка Content-Security-Policy предпочтительнее через заголовки?

На странице 3. Доставка политики CSP говорит

Поле заголовка HTTP-ответа Content-Security-Policy является предпочтительным механизмом доставки политики.

Но есть два допустимых механизма: доставка через HTTP-заголовок и доставка через HTML-элемент meta:

<meta http-equiv="Content-Security-Policy" content="..."/>

Почему доставка через заголовок «предпочтительнее» или, что более важно, каковы недостатки доставки через HTML-тег meta?

По разным причинам в нашем развертывании проще управлять добавлением CSP в заголовок HTML.


person Marvin    schedule 06.05.2019    source источник
comment
stackoverflow.com/questions/42444106 / связано, но не решает этот вопрос.   -  person Marvin    schedule 06.05.2019
comment
И, продолжая комментировать свой собственный вопрос, я понимаю, что метатег http-equiv должен отображаться первым в заголовке, поскольку он применяется только к элементам, которые следуют за ним (поэтому, возможно, это одна из причин, чтобы предпочесть заголовок http... )   -  person Marvin    schedule 06.05.2019
comment
Это и ограничения метатега согласно примечанию. Заголовок Content-Security-Policy-Report-Only не поддерживается внутри метаэлемента. Так же как и директивы report-uri, frame-ancestors и sandbox.   -  person Alohci    schedule 06.05.2019
comment
Что сказал @Alohci. Но если использование элемента meta вместо HTTP-заголовка работает для вас без каких-либо наблюдаемых проблем и, как вы говорите, им легче управлять в вашем развертывании, то для вас нет никаких преимуществ в использовании HTTP-заголовка. В частности, если вы также не используете заголовок Content-Security-Policy-Report-Only и не используете директивы report-uri, frame-ancestors или sandbox, то можно просто указать метаэлемент в каждом документе вместо использования HTTP-заголовок.   -  person sideshowbarker    schedule 07.05.2019
comment
@Alohci, если вы опубликуете свой комментарий в качестве ответа, я приму его, поскольку он кажется уместным.   -  person Marvin    schedule 09.05.2019


Ответы (1)


Кажется, на этот вопрос уже был ответ в комментариях, но ни у кого нет пары минут, чтобы написать ответ, так что я попробую сам.

Доставка Content-Security-Policy через HTTP-ответ поддерживает некоторые дополнительные функции по сравнению с доставкой через метаэлемент HTML, например Content-Security-Policy-Report-Only и report-uri, предки кадров и директивы песочницы.

Однако, если вам не нужно использовать какую-либо из этих функций, использование заголовка HTTP не дает никаких преимуществ.

Обратите внимание, что при использовании HMTL метатег http-equiv должен отображаться первым в заголовке, поскольку он применяется только к элементам, которые следуют за ним.

person Pablo EM    schedule 22.05.2019