ホームページ >バックエンド開発 >PHPチュートリアル >HTTP プロトコルによる URI 長、POST データ長、COOKIE 長の制限
HTTP プロトコルでは、URI 長、POST データ長、COOKIE 長が制限されます
HTTP1.1 プロトコルでは URL の長さに制限はありません。RFC プロトコルで説明されているように、HTTP プロトコルでは、許容される任意の長さの URI を処理できなければなりません。サーバーが長すぎる URI を処理できない場合は、414 ステータス コードを返す必要があります。
HTTP プロトコルではこれが規定されていますが、Web サーバー と ブラウザ の両方には、URI に関する独自の長さの制限があります。
サーバーの制限: 私がよく使用するサーバーの種類は、Nginx と Tomcat です。URL の長さの制限については、nginx の構成パラメーターであるlarge_client_header_buffers と、要求の構成を制御することによって制限されます。 TomcatのパラメータはmaxHttpHeaderSizeで、自分で設定できます。
ブラウザの制限: 各ブラウザには URL の長さにも制限があります。次に、いくつかの一般的なブラウザの URL の長さの制限を示します: (単位: 文字)
IE : 2803
Firefox:65536
クロム:8182
サファリ:80000
オペラ:190000
get リクエストの場合、URL の長さ制限内でリクエストされるパラメータの数に制限はありません。
Post データの長さの制限は、URL の長さの制限と同様です。HTTP プロトコルでは長さの制限は指定されておらず、サーバー側で http リクエスト ヘッダーの最大長を構成することで実装できます。
Cookie の長さ制限は、いくつかの側面で要約できます。
(1) ブラウザーで許可されるドメインごとの Cookie の最大数。私自身はテストしていませんが、インターネット上にある情報はおそらく次のとおりです
IE: 当初は 20、後に 50 にアップグレードされました
Firefox: 50
オペラ:30
クロム: 180
Safari: 無制限
Cookie の数が制限を超えた場合のブラウザの動作: IE と Opera は LRU アルゴリズムを使用して、古いクッキーや使用頻度の低い Cookie を消去します。一方、Firefox の動作は、特定の Cookie の値をランダムに除外します。もちろん、どのような戦略であっても、Cookie の数がブラウザで許可されている範囲を超えないようにしてください。
(2) ブラウザが許可する各Cookieの最大長
Firefox および Safari: 4079 バイト
オペラ:4096 バイト
IE:4095 バイト
(3) サーバー内の HTTP リクエスト ヘッダーの長さの制限。 Cookie は各 http リクエストのヘッダーに添付されてサーバーに渡されるため、サーバーのリクエスト ヘッダーの長さにも影響されます。