为了提高安全性,我在中间件中添加了此响应标头。content-security-policy: default-src 'self'
。
并且在剃刀局部视图中,我有一个带有onchange="this.form.submit()
的SELECT元素>
<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-src'self'data:“。要么是'unsafe-inline'关键字,一个哈希('sha256 -...'),要么是要启用内联执行,需要一个随机数(“ nonce -...”)。注意也没有明确设置'script-src',所以'default-src'是用作备用。
((未知)ListPicker._handleMouseUp
放松策略可以解决,但不建议这样做:
script-src 'self' 'unsafe-inline'
。
在不违反CSP内联脚本约束的情况下,在剃刀局部视图中绑定事件(如onchange)的正确方法是什么?
为了提高安全性,我已将此响应标头添加到middleware.content-security-policy:default-src'self'中。在剃刀局部视图中,我有一个SELECT元素,其onchange =“ this ....
您可以在脚本文件中编写类似这样的代码。