2 つのアプリケーション サーバーと 1 つのスイッチがあります。アプリケーションサーバーのIPを使用してアプリケーションにアクセスすると、正常に動作します。ただし、URL で switch ip を使用すると、いくつかのリンクに対してのみ、Firefox と chrome でのみ Bad request エラーがスローされます。
14 に答える
これは、IBMによるこの問題の詳細な説明と解決策です。
問題(要約)
HTTPサーバーへのリクエストはレスポンスコード400で失敗します。
症状
ブラウザからの応答は次のように表示されます。
不正なリクエストブラウザが、このサーバーが理解できないリクエストを送信しました。リクエストヘッダーフィールドのサイズがサーバーの制限を超えています。
HTTPサーバーのError.logには、次のメッセージが表示されます:「リクエストに失敗しました:ヘッダーの読み取り中にエラーが発生しました」
原因
これは通常、非常に大きなCookieがあることが原因であるため、リクエストヘッダーフィールドがWebサーバーに設定された制限を超えました。
問題の診断
問題の診断を支援するために、httpd.confのLogFormatディレクティブに次を追加できます。error-note:%{error-notes} n
問題の解決
サーバー側の場合:httpd.confのディレクティブLimitRequestFieldSizeの値を増やします。LimitRequestFieldSize12288または16384 LimitRequestFieldSizeの設定方法については、[ApacheでLimitRequestFieldSizeの値を増やす]をオンにします。
クライアント側の場合:Webブラウザのキャッシュをクリアしても問題ありません。
私の場合はCookie 関連の問題です。値が非常に大きい Cookie が多数あり、それが問題の原因でした。
コンソールを開いて次のように入力するだけで、 stackoverflow.comでこの問題を再現できます。
[ ...Array(5) ].forEach((i, idx) => {
document.cookie = `stackoverflow_cookie${idx}=${'a'.repeat(4000)}`;
});
それは何ですか?
長さまたは値が 4000 バイトの文字列を持つ 5 つの Cookie を作成しています。次にページをリロードすると、同じ問題が表示されます。
google.comで試してみたところ、エラーが発生しますが、Cookie が自動的にクリアされます。これは、最初からやり直すための素晴らしいフォールバックです。
Bad Request, Your browser sent a request that this server could not understand
を使用してターゲット マシンにファイルをダウンロードしようとしたときに取得しましたcurl
。
代わりにscp
、ソース マシンからターゲット マシンにファイルをコピーすることで解決しました。
これと同じ問題があり、他の解決策がどれもうまくいかない場合は、URL をもう一度確認してください。
私の場合は最終的にスペースでしたが、Cronjob に追加したときに、誰かが誤って空白もコピーしました。
データ型が正しいかどうかを確認してください。
例:ファイルを送信する場合、ファイルの完全なオブジェクトを送信することを検討する必要があります
WordPress Web サイトでこのエラーが発生する場合は、以下の解決策を確認してください。
- 破損したブラウザ キャッシュと Cookie: Cookie を削除し、キャッシュをクリアします
- サーバーを再起動します