2010-07-08 38 views
2

當IE做Ajax時,2k長度限制仍然適用於URL嗎? (或僅用於地址欄上的URL)對IE來說URL的長度不能超過2k,但是ajax URL又包含hash中的URL?

有關哈希部分加在一起超過2k但沒有哈希的URL,它小於2k?

+0

你是要求好奇的緣故,還是因爲你想要做出一個非常巨大的GET請求?如果是這樣,我可以建議發佈您的數據嗎? – Faisal 2010-07-08 22:21:18

+0

查看 - > http://support.microsoft.com/kb/208427 – 2010-07-08 22:24:21

+1

'POST'是一個好主意,但它不適用於跨域請求,'JSONP'只能與'GET'一起使用。 – travis 2012-08-16 18:02:54

回答

3

所有的IE請求都通過Wininet。看看SDK頭文件:

C:\Program Files (x86)\Microsoft SDKs\Windows\v7.0A\Include>findstr /spin /c:"INTERNET_MAX" *.h 
WinInet.h:85:#define INTERNET_MAX_HOST_NAME_LENGTH 256 
WinInet.h:86:#define INTERNET_MAX_USER_NAME_LENGTH 128 
WinInet.h:87:#define INTERNET_MAX_PASSWORD_LENGTH 128 
WinInet.h:88:#define INTERNET_MAX_PORT_NUMBER_LENGTH 5   // INTERNET_PORT is unsigned short 
WinInet.h:89:#define INTERNET_MAX_PORT_NUMBER_VALUE 65535  // maximum unsigned short value 
WinInet.h:90:#define INTERNET_MAX_PATH_LENGTH  2048 
WinInet.h:91:#define INTERNET_MAX_SCHEME_LENGTH  32   // longest protocol name length 
WinInet.h:92:#define INTERNET_MAX_URL_LENGTH   (INTERNET_MAX_SCHEME_LENGTH \ 
WinInet.h:94:          + INTERNET_MAX_PATH_LENGTH) 
WinInet.h:1712:#define MAX_GOPHER_HOST_NAME  INTERNET_MAX_HOST_NAME_LENGTH 
WinInet.h:1720:         + INTERNET_MAX_PORT_NUMBER_LENGTH \ 
Winineti.h:1511:#define URL_LIMIT INTERNET_MAX_URL_LENGTH 

所以,是的,這個長度限制適用。

+0

在IE9中,更長的URL成爲可能,但仍應該避免。 http://blogs.msdn.com/b/ieinternals/archive/2014/08/13/url-length-limits-in-internet-explorer.aspx – EricLaw 2014-08-13 22:05:50

+0

確實,事情已經改變。 – 2014-08-14 19:03:44

1

不完全知道這一點,但你可以通過使用POST避免此限制,而不是GET

2

的URL長度的限制包括URL的所有部分,包括主機,用戶信息,路徑,片段和查詢參數。該限制適用於任何請求(GET,PUT,POST,DELETE等)。這是一個真正的WinInet限制,而不是IE地址欄限制,所以它也適用於AJAX請求。

如果您需要將長數據發送到服務器,您應該考慮使用請求正文中的數據執行POST。

+0

,除了哈希沒有發送到服務器......它只是在地址欄,書籤和歷史記錄中,並且如果瀏覽器有一個(但現在哈希用於ajax歷史記錄和書籤目的) – 2010-07-08 22:49:55