Rumah  >  Artikel  >  hujung hadapan web  >  Bagaimana untuk menyelesaikan ralat Http Error 302 dalam pemalam muat naik jQuery Uploadify_jquery

Bagaimana untuk menyelesaikan ralat Http Error 302 dalam pemalam muat naik jQuery Uploadify_jquery

WBOY
WBOYasal
2016-05-16 15:24:481915semak imbas

Saya memperkenalkan cara menggunakan pemalam muat naik jquery sebelum ini. Saya menghadapi masalah ralat Http 302 semasa digunakan. Saya akan merakamnya di sini Pertama sekali, http 302 bermakna permintaan telah diubah hala, yang mudah difahami Jika skrip muat naik pemprosesan muat naik anda mempunyai pengesahan sesi, ralat ini akan berlaku kerana kilat tidak termasuk maklumat kuki semasa melaksanakan permintaan pos, dan pelayan. session akan mendapat SESSIONID berdasarkan kuki pelanggan. Sememangnya, sesi tidak boleh diperoleh tanpa menyerahkan kuki, dan muat naik mengembalikan ralat 302 (permintaan diubah hala).

Penyelesaian:

Hantar nilai session_id ke pelayan:


<script>
$(document).ready(function() { 
   $('#file_upload').uploadify({ 
    'uploader' : 'uploadify/uploadify.swf', 
    'script'  : 'uploadify.php',
    'folder'  : 'uploads/file', 
    'formData': { 'session': '<&#63;php echo session_id();&#63;>'}, 
    'onComplete' : function(event, ID, fileObj, response, data) { 
     alert(response); 
    } 
   }); 
}); 
</script>
Kemudian sebelum pengesahan sesi sisi pelayan:


if (isset($_POST['session'])){ 
  session_id($_POST['session']); 
  session_start();//注意此函数要在session_id之后 
} 
Sudah tentu, anda juga boleh terus menghantar id sesi dalam URL, supaya ralat Http Error 302 dapat diselesaikan.

Pelanjutan masalah: Ralat HTTPROR 302 juga berlaku dalam firefox dan chrome biasa di bawah MVC menggunakan uploadify3.1 IE. Adakah terdapat sebarang penyelesaian?

jquery uploadify boleh memuat naik seperti biasa di bawah IE Apabila melaksanakan muat naik tak segerak, setiap fail akan menyerahkan permintaan kepada pelayan semasa memuat naik. Setiap permintaan memerlukan pengesahan keselamatan, sesi dan pengesahan kuki. Ya, itu sahaja. Memandangkan muat naik jquery menggunakan kilat untuk melaksanakan muat naik, setiap kali permintaan aliran data dihantar ke latar belakang, IE akan secara automatik menggabungkan storan kuki tempatan dan menghantarnya ke pelayan. Tetapi firefox dan chrome tidak akan melakukan ini, mereka akan fikir ia tidak selamat.

Mula-mula anda perlu menambah kandungan berikut pada global.asxa


protected void Application_BeginRequest(object sender, EventArgs e)
    {
      /* we guess at this point session is not already retrieved by application so we recreate cookie with the session id... */
      try
      {
        string session_param_name = "ASPSESSID";
        string session_cookie_name = "ASP.NET_SessionId";

        if (HttpContext.Current.Request.Form[session_param_name] != null)
        {
          UpdateCookie(session_cookie_name, HttpContext.Current.Request.Form[session_param_name]);
        }
        else if (HttpContext.Current.Request.QueryString[session_param_name] != null)
        {
          UpdateCookie(session_cookie_name, HttpContext.Current.Request.QueryString[session_param_name]);
        }
      }
      catch
      {
      }

      try
      {
        string auth_param_name = "AUTHID";
        string auth_cookie_name = FormsAuthentication.FormsCookieName;

        if (HttpContext.Current.Request.Form[auth_param_name] != null)
        {
          UpdateCookie(auth_cookie_name, HttpContext.Current.Request.Form[auth_param_name]);
        }
        else if (HttpContext.Current.Request.QueryString[auth_param_name] != null)
        {
          UpdateCookie(auth_cookie_name, HttpContext.Current.Request.QueryString[auth_param_name]);
        }

      }
      catch
      {
      }
    }

    private void UpdateCookie(string cookie_name, string cookie_value)
    {
      HttpCookie cookie = HttpContext.Current.Request.Cookies.Get(cookie_name);
      if (null == cookie)
      {
        cookie = new HttpCookie(cookie_name);
      }
      cookie.Value = cookie_value;
      HttpContext.Current.Request.Cookies.Set(cookie);
    }
Kod pemalam muat naik halaman permulaan adalah seperti berikut


<script type="text/javascript">
    var auth = "@(Request.Cookies[FormsAuthentication.FormsCookieName]==null &#63; string.Empty : Request.Cookies[FormsAuthentication.FormsCookieName].Value)";
    var ASPSESSID = "@Session.SessionID";

    $(function () {
      $('#upload').uploadify({
        'formData': { 'folder': '/Upload', 'ASPSESSID': ASPSESSID, 'AUTHID': auth },
        'buttonText': '浏览',
        'buttonClass': 'browser',
        'fileSizeLimit' : '100KB',
        'fileTypeExts': '*.xls;*.xlsx',
        'removeCompleted': false,
        'swf': '@Url.Content("~/Scripts/Uploadify/uploadify.swf")',
        'uploader': '/Upload',
        'onUploadSuccess': function (file, data, response) {}
      });
    });
  </script>

Penyelidikan tentang masalah boleh berbeza dan pelbagai aspek. Kita mesti belajar membuat kesimpulan daripada satu contoh supaya kita boleh mempelajari pengetahuan profesional secara fleksibel dan menguasai kemahiran profesional.

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn