用URL傳值的瀏覽器最大長度限制

原文鏈接:https://www.cnblogs.com/lucongrui/p/3422927.html

用URL傳值的瀏覽器最大長度限制

1:問題描述:畫面上是有一個table,table上表示了有很多文件的。用戶可以操作選擇表格中一條,或者多條,然後點擊畫面上的一個下載button。

   如果是分別一條一條的下載沒有問題,用firefox一次下載多條也沒有問題;但是如果用IE9的一次性下載多條的話,就會出錯。

 

2:原因:經過調查發現是從當前頁面網download畫面傳值的時候,所有的文件名都是用URL傳遞的,用submit方法一次提交到後臺。

   所以考慮是不是因爲URL長度不夠,上網調查之後,下面是一位同學調查的結果,直接拿過來用。還有網友說是URL的長度是由瀏覽器和web服務器

   共同限定的。

   Microsoft Internet Explorer (Browser)
   IE瀏覽器對URL的最大限制爲2083個字符,如果超過這個數字,提交按鈕沒有任何反應。

   Firefox (Browser)
   
對於Firefox瀏覽器URL的長度限制爲65,536個字符,但當我測試時,最大隻能處理8182個字符,這是因爲url的長度除了瀏覽器限制外,還會受Web服務器的限制。

   Safari (Browser)
   URL最大長度限制爲 80,000個字符。

   Opera (Browser)
   URL最大長度限制爲190,000個字符。

   Google (chrome)
   url長度一旦超過8182個字符時。

 

3:解決方法: 用submit的post方法,然後根據傳遞的值,動態的添加hidden元素。把傳遞參數的值賦給hidden。

   因爲是用post請求的話,hidden的值是存放在header中。而不是通過url傳遞的。post請求傳遞的長度只和web服務器有關,和瀏覽器無關。

4:下面是添加和刪除畫面元素的代碼,僅供參考

   添加:

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

   input.setAttribute( 'type' , 'hidden' );
   input.setAttribute( 'name' , '參數名' )

   input.setAttribute( 'value' , ‘參數值’ );

   form.appendChild( input );

   刪除:

   var inputAry = document.getElementsByName("selectFiles");
   var inputCnt = inputAry.length;
   if (inputCnt > 0){
       for (var i=0; i<inputCnt; i++) {
         form.removeChild(inputAry[0]);
         }
    }

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章