加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

c# – 如何通过jquery ajax发送AntiForgeryToken(CSRF)和FormDat

发布时间:2020-12-15 04:10:59 所属栏目:百科 来源:网络整理
导读:所以我想通过 AJAX将FileUpload与AntiForgeryToken一起发布.这是我的代码: 视图 @using (Html.BeginForm("Upload","RX",FormMethod.Post,new {id = "frmRXUpload",enctype = "multipart/form-data"})){ @Html.AntiForgeryToken() @Html.TextBoxFor(m = m.RX
所以我想通过 AJAX将FileUpload与AntiForgeryToken一起发布.这是我的代码:

视图

@using (Html.BeginForm("Upload","RX",FormMethod.Post,new {id = "frmRXUpload",enctype = "multipart/form-data"}))
{
     @Html.AntiForgeryToken()
     @Html.TextBoxFor(m => m.RXFile,new {.type = "file"})
     ...rest of code here
}

<script>
    $(document).ready(function(){
        $('#btnRXUpload').click(function () {
            var form = $('#frmRXUpload')

            if (form.valid()) {
                var formData = new FormData(form);
                formData.append('files',$('#frmRXUpload input[type="file"]')[0].files[0]);
                formData.append('__RequestVerificationToken',fnGetToken());

                $.ajax({
                    type: 'POST',url: '/RX/Upload',data: formData,contentType: false,processData: false
                })
            }
        })
    })
</script>

调节器

[HttpPost]
[ValidateAntiForgeryToken]
public ActionResult Upload()
{
    //rest of code here
}

我明白了

The anti-forgery token could not be decrypted. If this application is hosted by a Web Farm or cluster

通过提琴手的错误.不知道如何解决这个问题?

我发现了答案:

<script>
        $(document).ready(function(){
            $('#btnRXUpload').click(function () {
                var form = $('#frmRXUpload')

                if (form.valid()) {
                    var formData = new FormData(form.get(0)); //add .get(0)
                    formData.append('files',$('#frmRXUpload input[type="file"]')[0].files[0]);

                    $.ajax({
                        type: 'POST',processData: false
                    })
                }
            })
        })
    </script>

解决方法

最后发现答案:

我只需要在表单中添加.get(0),这里是代码:

<script>
        $(document).ready(function(){
            $('#btnRXUpload').click(function () {
                var form = $('#frmRXUpload')

                if (form.valid()) {
                    var formData = new FormData(form.get(0)); //add .get(0)
                    formData.append('files',$('#frmRXUpload input[type="file"]')[0].files[0]);
                    //formData.append('__RequestVerificationToken',fnGetToken()); //remark this line

                    $.ajax({
                        type: 'POST',processData: false
                    })
                }
            })
        })
    </script>

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读