java url 请求 最大长度限制_Http请求 url 请求头 请求体 大小长度限制
HTTP協議不對URI的長度作事先的限制,服務器必須能夠處理任何他們提供資源的URI,并且應該能夠處理無限長度的URIs,這種無效長度的URL可能會在客戶端以基于GET方式的請求時產生。如果服務器不能處理太長的URI的時候,服務器應該返回414狀態碼(此狀態碼代表Request-URI太長)。 具體參見協議 ? ietf.org/rfc/rfc2616.txt 雖然協議中未明確對url進行長度限制,但在真正實現中,url的長度還是受到限制的: 一是服務器端的限制; 二就是游覽器端的限制
url長度限制
1,瀏覽器
瀏覽器
最大長度(字符)
備注
Internet?Explorer
2083
Firefox
65,536
chrome
8182
curl(linux下指令
8167
2,服務端
即使客戶端同意發送無限長度的URI,但是服務器一方一般都是有長度限制的。一般服務是沒有專門針對URI的參數限制的,但是由于URI是會包含在request header中的,所以對header的大小限制是會對URI起作用的
ps:URI在HTTP協議中是叫做request-Line的,如果具體看協議,是會發現request-Line和request-header是兩個不一樣的,就是說request的請求其實該分為request-line, request-header, request-body三個部分的但是好像使用的時候都默認將header中理解為包含了request-line。
Header
header中存放的信息非常多,比如request-line,cookie,還有各種key-value的特定header字段和值。有點時候,我們也會往header中添加一些自定義的屬性。header的長度和URI的情況是一樣的。協議中并沒有顯示限制header的大小。理論上在header中放多少屬性都是可以的。但是......
2.1?nginx
large_client_header_buffers 7 512k; //該參數對nginx服務器接受客戶端請求的頭信息時所分配的最大緩沖區的大小做了限制,也就是nginx服務器一次接受一個客戶端請求可就收的最大都信息大小。這個頭不僅包含 request-line,還包括通用信息頭、請求頭域、響應頭域的長度總和。這也相當程度的限制了url的長度。nginx服務器默認的限制是4K或者8K,這是根據服務器的硬件配置有關的,一般為內存一頁的大小,目前大部分為4K,即4096字節。
client_header_buffer_size 512k; //該參數對發自客戶端的http頭信息的大小進行了限制,這個值和large_client_header_buffers同時限制了http請求頭的大小,超過其中一個值則服務器會返回錯誤狀態碼 414(Request-URI Too Large)。該參數的默認值為1K
2.2?tomcat
LimitRequestLine //從定義來看,這個選項限制的并不是url的長度,也不是head頭的長度,而是是http請求中 request-line的長度(相關定義:http://www.w3.org/Protocols/rfc2616/rfc2616-sec5.html#sec5.1)。即:Request-Line = Method SP Request-URI SP HTTP-Version CRLF 的長度。但這很大程度上也就限制的GET、HEAD請求的參數長度,因為GET和HEAD請求是不會向服務器發送消息實體(message-body)的。可以說這個限制就是限制了url的長度不能超過該設定的值,如果超過了,服務器會返回錯誤狀態碼 414(Request-URI Too Large)。tomcat(8.0版本)允許的http請求header的最大值是8024個字節(8KB) maxHttpHeaderSize="3145728" --可以設置這個控制請求url長度
post
nginx服務器
在nginx的配置文件中進行配置,限制請求報文體的大小,nginx默認大小是1M,相當于是限制了post方式提交內容的最大限制。 client_max_body_size ? 20m; //可以在http、server、location中加入此配置。 tomcat服務器 ?整個消息體限制 LimitRequestBody ?這個參數限制了http請求可以被接受的最大消息大小,默認是無限大的,但是其實這個無限也是有限的,最大不能超過2G。
tomcat默認設置表單提交數據大小上限為2m,數據大于2m,java后臺將接收不到數據,解決辦法是修改tomcat的server.xml中maxPostSize的值,將其設置為0即為無上限,7.0 以上版本 maxPostSize 設置為 -1
Cookie的長度限制
(1) 瀏覽器所允許的每個域下的最大cookie數目,沒有去自己測試,從網上找到的資料大概是這么個情況
IE :原先為20個,后來升級為50個
Firefox: 50個 Opera:30個
Chrome:180個
Safari:無限制
當Cookie數超過限制數時瀏覽器的行為:IE和Opera會采用LRU算法將老的不常使用的Cookie清除掉,Firefox的行為是隨機踢出某些Cookie的值。當然無論怎樣的策略,還是盡量不要讓Cookie數目超過瀏覽器所允許的范圍。
(2) 瀏覽器所允許的每個Cookie的最大長度
Firefox和Safari:4079字節
Opera:4096字節
IE:4095字節
(3) 服務器中Http請求頭長度的限制。Cookie會被附在每次http請求頭中傳遞給服務器,因此還會受到服務器請求頭長度的影響。
Html5 LocalStorage
Html5提供了本地存儲機制來供Web應用在客戶端存儲數據,盡管這個并不屬于Http協議的一部分,但是隨著Html5的流行,我們可能需要越來越多使用LocalStorage,甚至當它普及的時候跟它打交道就會同今天我們跟Cookie打交道一樣多。
對于LocalStorage的長度限制,同Cookie的限制類似,也是瀏覽器針對域來限制,只不過cookie限制的是個數,LocalStorage限制的是長度: Firefox\Chrome\Opera都是允許每個域的最大長度為5MB,但是這次IE比較大方,允許的最大長度是10MB
總結
以上是生活随笔為你收集整理的java url 请求 最大长度限制_Http请求 url 请求头 请求体 大小长度限制的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 2020美赛M奖感想
- 下一篇: mysql修改记录_MySQL中如何创建