Как связать события, такие как onchange, в представлениях бритвы, не нарушая CSP - PullRequest
0 голосов
/ 03 февраля 2020

В целях повышения безопасности я добавил этот заголовок ответа в промежуточном программном обеспечении. content-security-policy: default-src 'self'.

И в частичном представлении бритвы у меня есть элемент SELECT с onchange="this.form.submit()

<div class="dropdown-item text-dark">
    <form id="selectLanguage" method="post" class="form-horizontal" role="form"
            asp-controller="Home"
            asp-action="PersistLanguage" 
            asp-route-returnUrl="@returnUrl">
        <select name="culture" onchange="this.form.submit()"
                asp-for="@requestCulture.RequestCulture.UICulture.Name" asp-items="cultureItems">
        </select>
    </form>
</div>

Следовательно, браузер сообщает следующее:

Отказ от выполнения встроенного обработчика событий, поскольку он нарушает следующую директиву политики безопасности содержимого: "default-sr c 'self' data:" , Для включения встроенного выполнения требуется ключевое слово unsafe-inline, ha sh ('sha256 -...') или nonce ('nonce -...'). Также обратите внимание, что «script-sr c» не был задан явно, поэтому «default-sr c» используется в качестве запасного варианта.

(Неизвестно) ListPicker._handleMouseUp

Ослабление политики разрешает ее, но делать это не рекомендуется: script-src 'self' 'unsafe-inline'.

Какой правильный путь связать события, такие как onchange, в частичных видах бритвы, не нарушая ограничение встроенного сценария CSP?

1 Ответ

1 голос
/ 04 февраля 2020

Вы можете написать такой код в файле скрипта.

$(function(){
    $("#culture").change(function(){
        this.form.submit();
    });
});
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...