C# MVC Ajax.begin和内容安全策略

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

为了防止跨端脚本编写,我对我的一个应用程序实施了CSP。目前,我正在重新配置所有html类,以便javascript始终来自我的服务器

现在我发现了一个带有
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)]