POST請求大小不限制?

前言

一直以來認爲GET請求URL是限制長度的,而長度是隨各個瀏覽器而有差異,POST請求是大小不做限制,但後來項目中第三方post一個很大的數據過來,接口一直受到null值

GET請求長度限制

理論上GET請求數據長度沒有限制的,真正起到限制的是瀏覽器對其長度進行了限制。
爲兼容各個瀏覽器的請求長度,可以總結爲:URL長度限制爲2083個字符。
下面是各個瀏覽器對字符長度的具體限制:
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個字符。
通過上面的數據可知,爲了讓所有的用戶都能正常瀏覽, URL最好不要超過IE的最大長度限制(2083個字符),當然,如果URL不直接提供給用戶,而是提供給程序調用,這時的長度就只受Web服務器影響了。
注:對於中文的傳遞,最終會爲urlencode後的編碼形式進行傳遞,如果瀏覽器的編碼爲UTF8的話,一個漢字最終編碼後的字符長度爲9個字符。
因此如果使用的 GET 方法,最大長度等於URL最大長度減去實際路徑中的字符數。

POST請求大小限制

POST請求理論上也是不限制大小的,真正對其大小進行限制的是服務器的處理程序能力。Tomcat服務器對POST大小限制爲2M,這也就能解釋爲什麼第三方給我POST過來3張圖片(正常是300|400KB一張圖片)的數據時候會有時候能接收到,有時候就只能收到null值。
解決這個問題可以在Tomcat的配置文件裏取消POST大小限制,在conf目錄下,server.xml文件,修改

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

maxPostSize=”0”,即取消POST的大小限制!

遺憾的是我的項目沒有用到Tomcat容器,這個方法對我不起任何幫助,我使用的是spring cloud 的restful 微服務,至於這個問題怎麼解決,還有待續,TODO……

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