C# MVC Ajax.begin和内容安全策略
为了防止跨端脚本编写,我对我的一个应用程序实施了CSP。目前,我正在重新配置所有html类,以便javascript始终来自我的服务器 现在我发现了一个带有C# MVC Ajax.begin和内容安全策略,c#,jquery,ajax,asp.net-mvc,content-security-policy,C#,Jquery,Ajax,Asp.net Mvc,Content Security Policy,为了防止跨端脚本编写,我对我的一个应用程序实施了CSP。目前,我正在重新配置所有html类,以便javascript始终来自我的服务器 现在我发现了一个带有Ajax.beginnform的页面,并且总是出现错误“拒绝将字符串作为JavaScript求值,因为在以下内容安全策略指令中“script src'self”不是允许的脚本源。”如果我想提交表单并更新视图 谁能帮帮我,问题出在哪里 以下是我的html类(简称): UserInformation.cshtml: <div id="Ope
Ajax.beginnform
的页面,并且总是出现错误“拒绝将字符串作为JavaScript求值,因为在以下内容安全策略指令中“script src'self”不是允许的脚本源。
”如果我想提交表单并更新视图
谁能帮帮我,问题出在哪里
以下是我的html类(简称):
UserInformation.cshtml:
<div id="OpenAccountInformation">@Html.Action("OpenAccountInformation")</div>
</div>
@Scripts.Render("~/Scripts/bundles/ManageUsers/AccountInformation")
@model Tumormodelle.Models.ViewModels.AzaraUserModel
<input type="hidden" value="@ViewBag.Editable" id="EditableUserInformation">
<div id="Editable">
@using (Ajax.BeginForm("EditUser", "ManageUsers", new AjaxOptions { InsertionMode = InsertionMode.Replace, UpdateTargetId = "OpenAccountInformation", HttpMethod = "post", }))
{
@Html.AntiForgeryToken()
@Html.HiddenFor(m => m.UserID)
<div>
<div>
@Html.LabelFor(m => m.Username, new { @class = "entryFieldLabel" })
</div>
</div>
<div>
<div>
<button name="button" value="save" class="formbutton" id="saveButton">save</button>
<button name="button" value="cancel" class="formbutton" id="cancelButton">cancel</button>
</div>
}
</div>
<div id="NonEditable">
<div>
<div>
@Html.LabelFor(m => m.Username, new { @class = "entryFieldLabel" })
</div>
</div>
<div>
<div>
<button name="button" value="edit" class="formbutton" id="editButton" type="button">edit</button>
</div>
</div>
</div>
编辑:在Chrome调试器的帮助下,我发现表单提交时会抛出错误。尝试将此属性添加到控制器post操作中
[ValidateInput(false)]
Ajax.BeginForm
将在生成的页面HTML中生成内联脚本,您在内容安全策略中使用script src'self'
已禁止该脚本
如果要使用CSP阻止任何内联注入脚本,则必须使用Html.BeginForm
,并添加JavaScript,通过Ajax将其提交到外部.js
文件中。没有帮助:(.Checkt使用Visual Studio的调试器,当我单击save
按钮时,c#类似乎没有被击中。另一方面,cancel
按钮工作正常,但不需要调用服务器。
[ValidateInput(false)]