程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> .NET網頁編程 >> C# >> C#入門知識 >> jQuery uploadify在谷歌和火狐閱讀器上傳掉敗的處理計劃

jQuery uploadify在谷歌和火狐閱讀器上傳掉敗的處理計劃

編輯:C#入門知識

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上傳插件招致谷歌瓦解的成績呢?

處理方法,可以在每一個援用的文件前面加個隨機數,讓它每次要求都帶個參數,該成績則主動處理

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved