[HTTP] GET、PUT傳參長度

  • 397
  • 0
  • 2022-11-18

今天遇到一個問題公司內有實做寄送簡訊兩個Method,但覺得奇怪為甚麼分兩種一種是一般簡訊寄送,另一個是長簡訊發送透過字串切割分段GET到電信業者最後再通知寄送,兩者都是透過GET方式。

後來發現原來是GET有長度限制….但似乎長簡訊也不至於長到會發生錯誤….

 HTTP中存在GET和POST這兩種最常用的請求方式

 HTTP 協議下的 Get 請求引數長度是有大小限制的,最大不能超過XX,而 Post 是無限制的。

  1. 即使有長度限制,是限制整個URI長度,而不僅僅是你的引數值資料長度。
  2. HTTP協議並未規定GET、POST請求長度限制是多少。
  3. 請求長度限制是由各家瀏覽器和WebServer決定和設定,各家瀏覽器、 WebServer設定均不同,這依賴於各家瀏覽器規定或可以根據WebServer處理能力來決定。

 瀏覽器、WebServer最大長度

 瀏覽器

  1. IE:url長度限制是2,083字元,超過這個限制則自動截斷(若是form提交則提交按鈕不起作用)。
  2. Microsoft Edge:url長度限制似乎為 2,097,152字元。
  3. Firefox:url長度限制為 65,536字元,實際上有效的URL最大長度不少於100,000個字元。
  4. chrome:url長度限制超過2,097,152個字元返回本文開頭時列出的錯誤。
  5. Safari:url長度限制至少為 80,000 字元。
  6. Opera :url長度限制為190,000 字元。

  伺服器

  1. Apache能接受url長度限制為8,190 字元
  2. Microsoft Internet Information Server(IIS)能接受url長度限制為4,096個字元,maxQueryString限制為2,048個字元。
  3. 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並更改成更大的值。
  4. Nginx能接受url長度限制為8,000 字元

參考

https://blog.miniasp.com/post/2022/07/19/Maximum-length-of-URL-in-browsers-and-servers