《PHP實例:關于URL最大長度限制的相關資料查證》要點:
本文介紹了PHP實例:關于URL最大長度限制的相關資料查證,希望對您有用。如果有疑問,可以聯系我們。
PHP實例在開發調試支付寶接口時,突然發現支付寶接口的URL很長,遠遠大于之前自己印象中的255個字符.趕緊搜索查證了一番,理解如下:
PHP實例URL不能大于255bytes的說法確實存在,在RFC2616中提到:
PHP實例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.
PHP實例從上一點也可以看出,255bytes的說法也是為了兼容性考慮.實際上現代瀏覽器的限制如下:
PHP實例Firefox (Browser)
After 65,536 characters, the location bar no longer displays the URL in Windows Firefox 1.5.x. However, longer URLs will work. I stopped testing after 100,000 characters.
PHP實例Safari (Browser)
At least 80,000 characters will work. I stopped testing after 80,000 characters.
PHP實例Opera (Browser)
At least 190,000 characters will work. I stopped testing after 190,000 characters. Opera 9 for Windows continued to display a fully editable, copyable and pasteable URL in the location bar even at 190,000 characters.
PHP實例Apache (Server)
My early attempts to measure the maximum URL length in web browsers bumped into a server URL length limit of approximately 4,000 characters, after which Apache produces a “413 Entity Too Large” error. I used the current up to date Apache build found in Red Hat Enterprise Linux 4. The official Apache documentation only mentions an 8,192-byte limit on an individual field in a request.
PHP實例Microsoft Internet Information Server
The default limit is 16,384 characters (yes, Microsoft's web server accepts longer URLs than Microsoft's web browser). This is configurable.
PHP實例Perl HTTP::Daemon (Server)
Up to 8,000 bytes will work. Those constructing web application servers with Perl's HTTP::Daemon module will encounter a 16,384 byte limit on the combined size of all HTTP request headers. This does not include POST-method form data, file uploads, etc., but it does include the URL. In practice this resulted in a 413 error when a URL was significantly longer than 8,000 characters. This limitation can be easily removed. Look for all occurrences of 16×1024 in Daemon.pm and replace them with a larger value. Of course, this does increase your exposure to denial of service attacks.
PHP實例另外值得注意的是,有文章提到作為<a>的href屬性時,URL不能超過1024bytes,這點沒有詳細查證
PHP實例綜上,URL還是不適合太長,不是不得已,盡量不要通過GET方式提交大量參數,可以考慮用POST方式(大約在2M左右,應該是和服務器及設定有關).另外這么長的URL在拜訪和收藏(有文章提到有些瀏覽器在收藏超長地址時也是會出現問題)時也是相當不友好的.當然,之前數據庫字段設置時還是作為255bytes處理,現在可能要考慮擴充一下了.
維易PHP培訓學院每天發布《PHP實例:關于URL最大長度限制的相關資料查證》等實戰技能,PHP、MYSQL、LINUX、APP、JS,CSS全面培養人才。