GET方法和POST方法的區別,Get方法到底可傳遞的字符串的最大長度是多少?


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個。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM