jQuery uploadify在谷歌和火狐閱讀器上傳掉敗的處理計劃。本站提示廣大學習愛好者:(jQuery uploadify在谷歌和火狐閱讀器上傳掉敗的處理計劃)文章只能為提供參考,不一定能成為您想要的結果。以下是jQuery uploadify在谷歌和火狐閱讀器上傳掉敗的處理計劃正文
jquery.uploadify插件是一個基於jquery來完成上傳的,這個插件很好用,每次向後台發送數據流要求時,ie會主動把當地cookie存儲綁縛在一路發送給辦事器。但firefox、chrome不會如許做,他們會以為如許不平安,上面小編給年夜家分享有關jQuery uploadify在谷歌和火狐閱讀器上傳掉敗的處理計劃。
我是如許處理的,如許一切上傳文件的代碼都不須要修正,修改量最小,然則有平安隱患:
if (this.LoginInfo == null) { // 處理uploadify兼容火狐谷歌閱讀器上傳成績 // 然則,此代碼使體系有平安隱患,Flash法式要求該體系不須要驗證 // 要處理此平安隱患,須要Flash法式傳用戶名和暗碼過去驗證,然則該用戶名和暗碼不克不及寫在前端以便被造孽用戶看到 if (Request.UserAgent == "Shockwave Flash") { return; } else { filterContext.Result = RedirectToAction("LoginAgain", "Account", new { Area = "Auth" }); return; } }
我們的體系是ASP.NET MVC的,雖然說經由過程加密的方法可讓用戶看不到敏感信息,但歹意用戶不須要把敏感信息解密出來便可繞過體系驗證。
驗證信息不克不及直接寫前台,可以用ajax從後台獲得驗證信息,然後傳給flash,然後在攔阻器中驗證。
修正後:
JS代碼:
ajax要求後台獲得用戶名,傳給flash
$(function () { $.ajax({ url: "/Auth/Account/GetUserNamePwd", type: "POST", dataType: "json", data: {}, success: function (data) { $("#uploadify").uploadify({ height: 25, width: 100, swf: '/Content/Plugins/UploadifyJs/uploadify.swf', uploader: 'UploadFile', formData: { userName: data.data.userName, //ajax獲得的用戶名 pwd: data.data.pwd //ajax獲得的暗碼 }, buttonText: '選擇文件上傳', fileSizeLimit: '4MB', fileTypeDesc: '文件', fileTypeExts: '*.*', queueID: 'fileQueue', multi: true, onUploadSuccess: function (fileObj, data, response) { var d = eval("(" + data + ")"); $(".uploadify-queue-item").find(".data").html(" 上傳完成"); $("#url").val(d.url); $("#name").val(d.name); }, onUploadError: function (event, ID, fileObj, errorObj) { if (event.size > 4 * 1024 * 1024) { alert('跨越文件上傳年夜小限制(4M)!'); return; } alert('上傳掉敗'); } }); //end uploadify } }); }); //end $
攔阻器中代碼:
......
if (this.LoginInfo == null) { // 處理uploadify兼容火狐谷歌閱讀器上傳成績 // 然則,此代碼使體系有平安隱患,Flash法式要求該體系不須要驗證 // 要處理此平安隱患,須要Flash法式傳用戶名和暗碼過去驗證,然則該用戶名和暗碼不克不及寫在前端以便被造孽用戶看到 if (Request.UserAgent == "Shockwave Flash") { string userName = Request.Params["userName"]; string pwd = Request.Params["pwd"]; if (!string.IsNullOrWhiteSpace(userName) && !string.IsNullOrWhiteSpace(pwd)) { AuthDAL authDAL = new AuthDAL(); sys_user user = authDAL.GetUserInfoByName(userName); if (user != null && user.password == pwd) { return; } } } else { filterContext.Result = RedirectToAction("LoginAgain", "Account", new { Area = "Auth" }); return; } }
比來還總結個成績在jquery.uploadify上傳插件招致谷歌瓦解 ,很讓人末路火,最初抓包看看究竟甚麼緣由,才發明本來谷歌在第一次要求時,它會把一切須要援用的文件放入當地緩存,而uploadify須要每次都能要求,所以最初招致了瓦解湧現...
若何處理jquery.uploadify上傳插件招致谷歌瓦解的成績呢?
處理方法,可以在每一個援用的文件前面加個隨機數,讓它每次要求都帶個參數,該成績則主動處理