今天遇到一個問題公司內有實做寄送簡訊兩個Method,但覺得奇怪為甚麼分兩種一種是一般簡訊寄送,另一個是長簡訊發送透過字串切割分段GET到電信業者最後再通知寄送,兩者都是透過GET方式。
後來發現原來是GET有長度限制….但似乎長簡訊也不至於長到會發生錯誤….
HTTP中存在GET和POST這兩種最常用的請求方式
HTTP 協議下的 Get 請求引數長度是有大小限制的,最大不能超過XX,而 Post 是無限制的。
- 即使有長度限制,是限制整個URI長度,而不僅僅是你的引數值資料長度。
- HTTP協議並未規定GET、POST請求長度限制是多少。
- 請求長度限制是由各家瀏覽器和WebServer決定和設定,各家瀏覽器、 WebServer設定均不同,這依賴於各家瀏覽器規定或可以根據WebServer處理能力來決定。
瀏覽器、WebServer最大長度
瀏覽器
- IE:url長度限制是2,083字元,超過這個限制則自動截斷(若是form提交則提交按鈕不起作用)。
- Microsoft Edge:url長度限制似乎為 2,097,152字元。
- Firefox:url長度限制為 65,536字元,實際上有效的URL最大長度不少於100,000個字元。
- chrome:url長度限制超過2,097,152個字元返回本文開頭時列出的錯誤。
- Safari:url長度限制至少為 80,000 字元。
- Opera :url長度限制為190,000 字元。
伺服器
- Apache能接受url長度限制為8,190 字元
- Microsoft Internet Information Server(IIS)能接受url長度限制為4,096個字元,maxQueryString限制為2,048個字元。
- Perl HTTP::Daemon 至少以接受url長度限為8,000字元。Perl HTTP::Daemon中限制HTTP request headers總長度不超過16,384位元組(不包括post,file uploads等)。但當url超過8,000字元時會返回413錯誤。 這個限制可以被修改,在Daemon.pm查詢16×1024並更改成更大的值。
- Nginx能接受url長度限制為8,000 字元
參考
https://blog.miniasp.com/post/2022/07/19/Maximum-length-of-URL-in-browsers-and-servers