第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號(hào)安全,請(qǐng)及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個(gè)問(wèn)題,去搜搜看,總會(huì)有你想問(wèn)的

如何通過(guò)控制器操作和ajax保護(hù)文件下載?

如何通過(guò)控制器操作和ajax保護(hù)文件下載?

C#
茅侃侃 2022-08-20 17:39:02
我有一個(gè)應(yīng)用程序,我希望用戶能夠上傳和下載自己的文件。我實(shí)現(xiàn)了上傳和下載,但是我擔(dān)心下載操作的XSS漏洞。我只能使用GET方法實(shí)現(xiàn)實(shí)際下載的文件,但我想保護(hù)它(通常我使用POST +防偽令牌)。我該怎么做?這是我的控制器操作:        public ActionResult DownloadFile(int clientFileId)        {            var clientId = GetClientId(clientFileId);            var client = _unitOfWork.Clients.GetById(clientId);            if (client == null)                return HttpNotFound();            var file = _unitOfWork.ClientFiles.GetById(clientFileId);            if (file == null)                return HttpNotFound();            var practiceId = _unitOfWork.Users.GetPracticeIdForUser(User.Identity.GetUserId());            if (!AuthorizationHelper.CheckBelongsToPractice(_unitOfWork.Clients, typeof(Client),                practiceId, client.Id, nameof(Client.Id), nameof(Client.PracticeId)))                        {                return new HttpUnauthorizedResult();            }            var fileInfo = new FileInfo(file.FilePath);            var fileName = fileInfo.Name;            if (!fileInfo.Exists)                return HttpNotFound();            var path = Path.Combine(Server.MapPath("~/ClientFiles/" + clientId + "/"), fileName);            var contentType = MimeMapping.GetMimeMapping(path);            try            {                var contentDisposition = new System.Net.Mime.ContentDisposition                {                    FileName = fileName,                    Inline = false,                                    };                Response.AppendHeader("Content-Disposition", contentDisposition.ToString());                return File(path, contentType, fileName);            }            catch (Exception ex)            {                new ExceptionlessLogger(ex).Log();                return new HttpStatusCodeResult(500);            }        }
查看完整描述

1 回答

?
炎炎設(shè)計(jì)

TA貢獻(xiàn)1808條經(jīng)驗(yàn) 獲得超4個(gè)贊

我在這里找到了答案:https://codepen.io/chrisdpratt/pen/RKxJNo


$('#client-files-table').on('click', '.js-download', function () {

        var link = $(this);        

        $.ajax({

            url: '/clients/clientfiles/downloadfile?clientFileId=' + link.attr('data-clientfile-id'),

            method: 'POST',

            data: {

                __RequestVerificationToken: getToken()                

            },            

            xhrFields: {

                responseType: 'blob'

            },

            success: function (data, status, xhr) {

                var a = document.createElement('a');

                var url = window.URL.createObjectURL(data);

                a.href = url;

                var header = xhr.getResponseHeader('Content-Disposition');

                var filename = getFileNameByContentDisposition(header);

                a.download = filename;

                a.click();

                window.URL.revokeObjectURL(url);

                loadPartials();

            },

            error: function () {

                toastr.error('Unable to download.');

            }

        });            

    });


查看完整回答
反對(duì) 回復(fù) 2022-08-20
  • 1 回答
  • 0 關(guān)注
  • 93 瀏覽

添加回答

舉報(bào)

0/150
提交
取消
微信客服

購(gòu)課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號(hào)

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號(hào)