目錄
?? 瀏覽器限制
?? 服務(wù)器限制
在大多數(shù)人的一貫認(rèn)識(shí)中,一直認(rèn)為get請(qǐng)求方式有2048B的長(zhǎng)度限制,其實(shí)這種說法是有失偏頗的,甚至可以說是錯(cuò)誤的。
這個(gè)問題一直以來似乎是被N多人誤解,其實(shí)Http Get方法提交的數(shù)據(jù)大小長(zhǎng)度并沒有限制,而是IE瀏覽器本身對(duì)地址欄URL長(zhǎng)度有最大長(zhǎng)度限制:2048個(gè)字符。我們來看看權(quán)威官網(wǎng)的解釋:
在HTTP規(guī)范RFC-2616中有這樣一段描述,協(xié)議原文如下:
The HTTP protocol does not place any a priori limit on the length of a URI. Servers MUST be able to handle the URI of any resource they serve, and SHOULD be able to handle URIs of unbounded length if they provide GET- based forms that could generate such URIs. A server SHOULD return 414 (Request-URI Too Long) status if a URI is longer than the server can handle (see section 10.4.15).
Note: Servers ought to be cautious about depending on URI lengths above 255 bytes, because some older client or proxy implementations might not properly support these lengths.
翻譯:
HTTP協(xié)議不對(duì)URI的長(zhǎng)度作事先的限制,服務(wù)器必須能夠處理任何他們提供資源的URI,并且應(yīng)該能夠處理無限長(zhǎng)度的URIs,這種無效長(zhǎng)度的URL可能會(huì)在客戶端以基于GET方式的請(qǐng)求時(shí)產(chǎn)生。如果服務(wù)器不能處理太長(zhǎng)的URI的時(shí)候,服務(wù)器應(yīng)該返回414狀態(tài)碼(此狀態(tài)碼代表Request-URI太長(zhǎng))。
注:服務(wù)器在依賴大于255字節(jié)的URI時(shí)應(yīng)謹(jǐn)慎,因?yàn)橐恍┡f的客戶或代理實(shí)現(xiàn)可能不支持這些長(zhǎng)度。
從以上內(nèi)容中可以看出,其實(shí)http 1.1 協(xié)議中對(duì)URL的長(zhǎng)度是不受限制的,HTTP RFC規(guī)范中并沒有規(guī)定GET請(qǐng)求的URI長(zhǎng)度,只是說明如果server無法處理太長(zhǎng)的URI,可以通過返回414狀態(tài)碼。
協(xié)議規(guī)范中雖然未對(duì)GET請(qǐng)求的url長(zhǎng)度做出明確的限制規(guī)定,但是在主流的用戶代理瀏覽器和應(yīng)用服務(wù)器中對(duì)GET請(qǐng)求卻做出限制或者相關(guān)的可配置。也就是說在真正實(shí)現(xiàn)中,url的長(zhǎng)度還是受到限制的,一是服務(wù)器端的限制,二就是瀏覽器覽器端的限制。
1、Http get方法提交的數(shù)據(jù)大小長(zhǎng)度并沒有限制,Http協(xié)議規(guī)范沒有對(duì)URL長(zhǎng)度進(jìn)行限制
目前說的get長(zhǎng)度有限制,是特定的瀏覽器及服務(wù)器對(duì)它的限制。各種瀏覽器和服務(wù)器的最大處理能力如下:
?? 瀏覽器限制
-
IE瀏覽器(Microsoft Internet Explorer) 對(duì)url長(zhǎng)度限制是2083(2K+53)個(gè)字符,超過這個(gè)限制,則自動(dòng)截?cái)啵ㄈ羰莊orm提交則提交按鈕不起作用,沒有任何反應(yīng))。
——以下是微軟官方的一段說明:Internet Explorer 中的最大 URL 長(zhǎng)度為 2,083 個(gè)字符
Microsoft Internet Explorer has a maximum uniform resource locator (URL) length of 2,083 characters. Internet Explorer also has a maximum path length of 2,048 characters. This limit applies to both POST request and GET request URLs.
If you are using the GET method, you are limited to a maximum of 2,048 characters, minus the number of characters in the actual path.
However, the POST method is not limited by the size of the URL for submitting name/value pairs. These pairs are transferred in the header and not in the URL. ‘>However, the POST method is not limited by the size of the URL for submitting name/value pairs. These pairs are transferred in the header and not in the URL.
RFC 2616, “Hypertext Transfer Protocol — HTTP/1.1,” does not specify any requirement for URL length.
-----------------------------------摘要
Microsoft Internet Explorer 的最大統(tǒng)一資源定位器 (URL) 長(zhǎng)度為 2,083 個(gè)字符。 Internet Explorer 的最大路徑長(zhǎng)度也為 2,048 個(gè)字符。 此限制適用于 POST 請(qǐng)求和 GET 請(qǐng)求 URL。
如果使用的是 GET 方法,則限制為最多 2,048 個(gè)字符,減去實(shí)際路徑中的字符數(shù)。
但是,POST 方法不受提交名稱/值對(duì)的 URL 大小的限制。 這些對(duì)在標(biāo)頭中傳輸,而不是在 URL 中傳輸。
RFC 2616,“超文本傳輸協(xié)議 -- HTTP/1.1”沒有指定 URL 長(zhǎng)度的任何要求。
參考有關(guān)組件的進(jìn)一步細(xì)分,請(qǐng)參閱 Wininet 標(biāo)頭文件。
有關(guān)詳細(xì)信息,請(qǐng)參閱以下 Internet Social 網(wǎng)站中的 RFC 2616 第 3.2.1 節(jié)“超文本傳輸協(xié)議 -- HTTP/1.1”部分:ftp://ftp.isi.edu/in-notes/rfc2616.txt
-
Safari:url最大長(zhǎng)度限制為80000個(gè)字符。
-
Opera:url最大長(zhǎng)度限制為190000個(gè)字符。
-
Chrome:url最大長(zhǎng)度限制為8182個(gè)字符。超過最大限制則服務(wù)器會(huì)返回上面列出的414錯(cuò)誤。
-
Firefox:對(duì)Firefox瀏覽器url的長(zhǎng)度限制為:65536個(gè)字符。
所以,大多數(shù)瀏覽器的限制在2k-8k之間,更老的版本瀏覽器甚至只支持255 bytes。
?? 服務(wù)器限制
-
Apache能接受url長(zhǎng)度限制為8192字符
-
Microsoft Internet Information Server(IIS):n能接受最大url的長(zhǎng)度為16384個(gè)字符。
-
tomcat中通過較多的Connector參數(shù)控制url長(zhǎng)度限制:
maxParameterCount:GET和POST請(qǐng)求參數(shù)個(gè)數(shù),默認(rèn)是10000
maxPostSize:POST請(qǐng)求數(shù)據(jù)最大值 -
nginx可以通過修改配置來改變url請(qǐng)求串的url長(zhǎng)度限制:
client_header_buffer_size?默認(rèn)值:1k
large_client_header_buffers默認(rèn)值:4k或8k
所以,大多數(shù)Web服務(wù)器的限制為8192字節(jié)(8KB),通??梢栽诜?wù)器配置中的某個(gè)位置進(jìn)行配置
2、理論上講,post是沒有大小限制的。Http協(xié)議規(guī)范也沒有進(jìn)行大小限制,起限制作用的是服務(wù)器處理程序的處理能力。
Tomcat下默認(rèn)post長(zhǎng)度為2M,可通過修改conf/server.xml中的“maxPostSize=0”來取消對(duì)post大小的限制。
?? 注意:(若長(zhǎng)度超限,則服務(wù)端返回414標(biāo)識(shí))
1、首先即使有長(zhǎng)度限制,也是限制的是整個(gè)URI長(zhǎng)度,而不僅僅是你的參數(shù)值數(shù)據(jù)長(zhǎng)度。
2、HTTP協(xié)議從未規(guī)定GET/POST的請(qǐng)求長(zhǎng)度限制是多少
3、所謂的請(qǐng)求長(zhǎng)度限制是由瀏覽器和web服務(wù)器決定和設(shè)置的,瀏覽器和web服務(wù)器的設(shè)定均不一樣,這依賴于各個(gè)瀏覽器廠家的規(guī)定或者可以根據(jù)web服務(wù)器的處理能力來設(shè)定。
?? 參考資料:URL長(zhǎng)度限制文章來源:http://www.zghlxwxcb.cn/news/detail-451204.html
文章來源地址http://www.zghlxwxcb.cn/news/detail-451204.html
到了這里,關(guān)于你搞清楚了嗎?| GET請(qǐng)求方式的長(zhǎng)度限制到底是多少?的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!