1. ホーム
  2. Java

HttpリクエストのStatusコードについて。431 Request Header Fields Too Large 問題の処理について

2022-02-25 16:14:51

最近あるプロジェクトを行ったところ、バックエンドのエクスポートフォームに問題が発生し、エントリ数が一定数を超えると、レポートが表示されるようになりました。431 Request Header Fields Too Large 問題が発生し、この問題をウェブで検索したところ、問題の本質は、httpリクエストヘッダが大きすぎるということでした。

この問題の解決方法は基本的に同じで、サーバーのヘッダーサイズを変更することです。解決方法は以下の通りです。

springbootプロジェクトのymlファイルに、以下を追加します。

server:
  port: 8090
  tomcat:
    max-swallow-size: -1
 



 最大 http ヘッダーサイズ



: 2MB

なお、max-http-header-size は、tomcat ではなく、server の下にあることに注意してください。

ウェブ上の多くの人がこの変更を行ってうまくいったのですが、私のはまだエラーを報告しています。そこで解析したところ、サーバーの問題なので、フロントエンド/バックエンド分離で、まずリクエストがngnixに到達し、次にngnix関連の変更点を確認したところ、ngnix.confの変更点は以下のようになりました。

http { <未定義
    mime.typesをインクルードします。
    default_type application/octet-stream;

    #log_format main '$remote_addr - $remote_user [$time_local] "$request" '
    # '$status $body_bytes_sent "$http_referer" '
    # '"$http_user_agent" "$http_x_forwarded_for" ';

    #access_log logs/access.log main;
client_header_buffer_size 10240k。
    large_client_header_buffers 6 10240k; 

}

が修正されたものです。 クライアントヘッダバッファサイズ ラージクライアントヘッダバッファ  2つの値。もし、ngnix.confにこの値がなければ、追加するだけです。

この変更に伴い、私のプロジェクトは問題なく動作しています。