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上傳插件招致谷歌瓦解的成績呢?
處理方法,可以在每一個援用的文件前面加個隨機數,讓它每次要求都帶個參數,該成績則主動處理

