对于IE,URL的长度不能超过2k,但是ajax URL又包含URL中的哈希值?

时间:2010-07-08 22:19:31

标签: internet-explorer url

当IE执行Ajax时,2k长度限制是否仍然适用于URL? (或者仅用于地址栏上的URL)

如果URL的哈希部分超过2k但没有哈希值,那么它小于2k?

3 个答案:

答案 0 :(得分: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

所以,是的,长度限制适用。

答案 1 :(得分:2)

URL长度限制包括URL的所有部分,包括主机,用户信息,路径,片段和查询参数。该限制适用于任何请求(GET,PUT,POST,DELETE等)。这是一个实际的WinInet限制,而不是IE地址栏限制,所以它也适用于AJAX请求。

如果您需要将长数据发送到服务器,您应该考虑使用请求正文中的数据进行POST。

答案 2 :(得分:1)

不完全确定,但您可以通过使用POST而不是GET来避免此限制