GET方法和POST方法的區別,Get方法到底可傳遞的字符串的最大長度是多少?曾經人介紹,如果使用GET方式傳輸參數,URL的最大長度是256個字節,對此深信不疑.
但是最近看到一些超長的url,能夠在IE下工作,復制下來測算了一下長度,大概是650個字節,這個長度遠遠超過了256個字節.這時候對以前的說法不由得有些懷疑—-用各大搜索引擎翻了個遍,最后找到最權威的解釋—-Maximum URL length is 2,083 characters in Internet Explorer.———Microsoft Internet Explorer的最大統一資源定位符(URL)長度為2,083個字符。
Internet Explorer的最大路徑長度為2,048個字符。此限制適用於POST請求和GET請求URL。
如果使用GET方法,則最多限制為2,048個字符,減去實際路徑中的字符數。
但是,POST方法不受提交名稱/值對的URL大小的限制。這些對在標題中傳輸,而不是在URL中傳輸。
RFC 2616,“超文本傳輸協議 – HTTP / 1.1”,未指定對URL長度的任何要求。
沒錯,IE的url最大長度是2083個字節,可以用於GET傳遞數據的長度是2048個字節,這個數字不小,遠超過256這個曾經認為無比正確的數字.
另外POST方式傳遞的數據不受這個長度影響,它的值通過瀏覽器header傳輸而不是url.
瀏覽器
經過實際測試:
1、在IE8 下的URL地址總長度為:4076,超過該長度會自動忽略后面的內容;
2、在firefox 25下的URL地址總長度可以達到:7530,超過該長度會訪問錯誤;
3、在chrome 29.0.1547.62 的最大總長度達到:7675,超過該長度會訪問錯誤;
由此可見,在以前的瀏覽器下,或許URL的最大長度為256是可能的(現在找不到IE6或以前的版本來測試),隨着瀏覽器的更新升級支持的長度也會隨着變化。
服務器
1、apach
apache 能接受url長度限制為8 192 字符
2、IIS
Microsoft Internet Information Server(IIS)能接受url長度限制為16 384個字符。
3、Perl HTTP::Daemon
Perl HTTP::Daemon 至少可以接受url長度限制為8000字符。Perl HTTP::Daemon中限制HTTP request headers的總長度不超過16 384字節(不包括post,file uploads等)。但當url超過8000字符時會返回413錯誤。
這個限制可以被修改,在Daemon.pm查找16×1024並更改成更大的值。
4、ngnix
可以通過修改配置來改變url請求串的url長度限制。
client_header_buffer_size
默認值:client_header_buffer_size 1k
large_client_header_buffers
默認值 :large_client_header_buffers 4 4k/8k
注意事項:
由於jsonp跨域請求只能通過get請求,url長度根據瀏覽器及服務器的不同而有不同限制。
若要支持IE的話,url長度限制為2083字符,若是中文字符的話只有2083/9=231個字符。
若是Chrome瀏覽器支持的最大中文字符只有8182/9=909個。