2009-06-18 76 views

回答

2

HttpOpenRequest沒有最大長度,但您定位的服務器軟件可能會限制您的URL長度。

的Apache(服務器)

我的早期嘗試來測量撞到服務器URL長度限制的web瀏覽器 的 最大URL長度的大約4000個字符, 之後阿帕奇產生「 413 實體太大「錯誤。我使用了目前爲止最新的Apache編譯版本 在紅帽企業Linux 4中。 官方Apache文檔只有 提到了一個請求中的 單個字段的8,192字節限制。

Microsoft Internet信息服務器(服務器)

默認限制爲16,384個字符 (是的,微軟的Web服務器接受 比微軟的網絡瀏覽器 較長的URL)。這是可配置的。

Perl的HTTP ::守護程序(服務器)

最多8,000個字節會工作。構建具有Perl的HTTP :: Daemon模塊的web應用服務器 的那些 將在所有HTTP請求 頭部的 組合大小上遇到16,384字節限制。這不包括 POST方法表單數據,文件上傳, 等,但它包含URL。在 實踐中,當URL顯着長於8,000個字符時,導致413錯誤 。這個限制 可以很容易地刪除。在Daemon.pm 中查找所有 發生的16x1024,並用較大的值替換它們。 當然,這會增加您的拒絕服務攻擊風險。

(從Boutell.com

+0

你知道,如果這些限制包括名稱值對(例如url?data = x ..)或只是url本身? – 2010-09-08 09:34:30

3

有一些最大長度consts在WinInet.h:

... 
// 
// maximum field lengths (arbitrary) 
// 

#define INTERNET_MAX_HOST_NAME_LENGTH 256 
#define INTERNET_MAX_USER_NAME_LENGTH 128 
#define INTERNET_MAX_PASSWORD_LENGTH 128 
#define INTERNET_MAX_PORT_NUMBER_LENGTH 5   // INTERNET_PORT is unsigned short 
#define INTERNET_MAX_PORT_NUMBER_VALUE 65535  // maximum unsigned short value 
#define INTERNET_MAX_PATH_LENGTH  2048 
#define INTERNET_MAX_SCHEME_LENGTH  32   // longest protocol name length 
#define INTERNET_MAX_URL_LENGTH   (INTERNET_MAX_SCHEME_LENGTH \ 
             + sizeof("://") \ 
             + INTERNET_MAX_PATH_LENGTH) 
... 
相關問題