3

Wininet関数HttpOpenRequestに渡すことができる最大URL長はどれくらいですか?

4

3 に答える 3

5

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)
...
于 2009-08-18T10:50:35.843 に答える
2

HttpOpenRequestには最大長はありませんが、ターゲットとするサーバーソフトウェアにはURLの長さに制限がある可能性があります。

Apache(サーバー)

私の初期の試みでは、サーバーのURLの長さが約4,000文字に制限されたWebブラウザーで最大URLの長さを測定しようとしましたが、その後、Apacheは「413EntityTooLarge」エラーを生成しました。Red Hat Enterprise Linux 4にある最新のApacheビルドを使用しました。公式のApacheドキュメントには、リクエストの個々のフィールドに対する8,192バイトの制限のみが記載されています。

Microsoftインターネットインフォメーションサーバー(サーバー)

デフォルトの制限は16,384文字です(はい、MicrosoftのWebサーバーはMicrosoftのWebブラウザよりも長いURLを受け入れます)。これは構成可能です。

Perl HTTP ::デーモン(サーバー)

最大8,000バイトが機能します。PerlのHTTP::Daemonモジュールを使用してWebアプリケーションサーバーを構築する場合、すべてのHTTP要求ヘッダーの合計サイズに16,384バイトの制限が発生します。これには、POSTメソッドのフォームデータやファイルのアップロードなどは含まれませんが、URLは含まれます。実際には、URLが8,000文字よりも大幅に長い場合、これにより413エラーが発生しました。この制限は簡単に取り除くことができます。Daemon.pmで16x1024のすべての出現箇所を探し、それらをより大きな値に置き換えます。もちろん、これによりサービス拒否攻撃への露出が増加します。

Boutell.comから)

于 2009-06-18T00:27:15.600 に答える
1

2000文字未満をお勧めします。、しかし、このKB記事は、Internet Explorerには2083の制限があることを示唆しています。これは、あなたのケースにも当てはまる可能性があります。

于 2009-06-18T00:11:08.380 に答える