2009-06-18 6 views

答えて

2

HttpOpenRequestには最大長がありませんが、対象とするサーバーソフトウェアのURLの長さに制限がある可能性があります。 Apacheは "を生成 た後、約4,000文字のサーバーのURLの長さ制限 にぶつかったWebブラウザでの 最大URL長 を測定する

のApache(サーバ)

私の初期の試み、 413 エンティティが大きすぎます "というエラーが発生しました。 公式のApacheドキュメントの には、要求の個々のフィールドの の8,192バイトの制限が記載されています。

のMicrosoftのInternet Information Server(サーバー)

デフォルトの制限は(はい、マイクロソフトのWebサーバーは、MicrosoftのWebブラウザ より 長いURLを受け入れる)16,384文字 です。これは設定可能です。

PerlのHTTP :: 8000バイトまで

が動作するデーモン(サーバ)。 PerlのHTTP :: Daemonモジュールを使用してWebアプリケーションサーバー を構築すると、 の ヘッダーの合計サイズが になり、 に16,384バイトの制限が発生します。これには POSTメソッドフォームデータ、ファイルアップロード、 などは含まれませんが、URLは含まれています。 では、URLがかなり長くなったときに というエラーが4135で発生しました。 より8,000文字長くなりました。この制限は で簡単に削除できます。 Daemon.pm のすべてをDaemon.pm で検索し、それらをより大きな値に置き換えます。 もちろん、これにより、サービス拒否攻撃への脆弱性が増加する可能性があります( )。

Boutell.comから)

+0

の周りに失敗しているあなたは知っていますか(例:url?data = x ..)か、それともurl自体? –

+0

@David Sykes:私は*限界が文字を格納するために使用されるバッファーのサイズに基づいていると信じているので、名前と値のペアが含まれていると仮定します。しかし、私は推測しているだけです。 –

+0

* "HttpOpenRequestは最大長を持っていません" * - [この回答](https://stackoverflow.com/a/1293129/1889329)は、そのステートメントに従います。 – IInspectable

1

I would suggest less than 2000 characters.ですが、このKB articleは、Internet Explorerには2083の制限があることを示しています。これはあなたのケースにも当てはまります。

+0

は、これらの制限は、名前と値のペアを含める場合は、[はい、私たちはこの量 – Jason

3

WinInet.hにおけるいくつかの最大長constsあります

... 
// 
// 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) 
... 
関連する問題