【http post】post傳輸數據大小

之前知道get請求對url請求長度有限制,post請求沒有限制。今天在做程序的時候遇到了這個問題。

場景:我需要將前端生成的Svg圖片轉化base64生成字符串傳入後臺,後臺根據字符串解碼生成到PPT裏面。

附:前端將svg生成圖片的工具:saveSvgAsPng.js第三方js。https://github.com/exupero/saveSvgAsPng,後端將數據圖片生成PPT使用的是POI。

 

參數傳遞方式

前端將svg生成base64字符串,然後以form的post方式提交,並且將每個svg的base64字符串生成一個hidden的input。

完成了開發本地測試沒問題。發到測試環境用戶測試時,發現下載PPT下不下來。瀏覽器提示如下:

本地調試發現在用httprequest拿參數時,爲空。

 

連忙去點擊其他下載看看,結果都能下載下來,ok。百思不得其解,於是去看了看這個request的圖片的數量,發現一共有62個,想了想會不會是post傳輸數據的限制,於是我修改數據減少圖片的數量,當減少到45個的時候,PPT下載下來了。這麼看來確實是psot請求限制的問題。

查了相關資料,關於http get和post,本身http協議是沒有限制其傳輸數據的大小的,主要在於瀏覽器與後臺server的限制。

get請求參數限制

下面get請求瀏覽器最大處理能力說明.

Microsoft Internet Explorer (Browser)

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

對於Firefox瀏覽器URL的長度限制爲65,536個字符。

Safari (Browser)

URL最大長度限制爲 80,000個字符。

Opera (Browser)

URL最大長度限制爲190,000個字符。

Google (chrome)

URL最大長度限制爲8182個字符。

Apache (Server)

能接受最大url長度爲8,192個字符。

Microsoft Internet Information Server(IIS)

能接受最大url的長度爲16,384個字符。

 

post請求參數限制

post請求理論上沒有限制,主要是後臺服務器做的限制,比如在Tomcat下取消POST大小的限制(Tomcat默認2M).

打開tomcat目錄下的conf目錄,打開server.xml 文件,修改

<Connector port="8080" protocol="HTTP/1.1"
               connectionTimeout="20000"
               redirectPort="8443" maxPostSize="0" />

maxPostSize="0" (設爲0是取消POST的大小限制)。

關於maxPostSize在不同tomcat版本下還有不一樣,tomcat7.0.63之前該值設置0或者負數代表不限制,tomcat7.0.63之後設置0會導致數據提交不到後臺,設置負數則代表不限制post參數大小,慎之!我的版本是7.0.61,所以設置爲0

 

修改之後,成功下載!

 

參考:https://www.cnblogs.com/joechinochl/articles/6047145.html

 

 

戰如熊虎,不惜屈命!

 

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