1. シナリオ表示 Tomcat ログに次の例外情報が時々報告されます。何が起こっているのでしょうか? java.lang.IllegalArgumentException: リクエストターゲットに無効な文字が見つかりました。有効な文字は RFC 7230 および RFC 3986 で定義されています。 org.apache.coyote.http11.AbstractNioInputBuffer.parseRequestLine(AbstractNioInputBuffer.java:283) で org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1017) で org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:684) で org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1520) で org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.run(NioEndpoint.java:1476) で java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142) で java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617) で org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61) で java.lang.Thread.run(Thread.java:745) で ページを開くことができません 2. 原因分析 これは、リクエスト ヘッダーに RFC 7230 および RFC 3986 仕様で定義されている不正な文字が含まれていることを意味し、これによりページで 400 例外が報告されます。 理由は、Tomcat のバージョンが高すぎるためです。インターネットでは、Tomcat バージョン 7.0.73 以降では、http ヘッダー (リクエスト ヘッダー) の検証が追加されると言われています。 リクエストの取得、つまり疑問符を渡すパラメータは、リクエストヘッダーのみがあり、リクエスト本体がないことを意味します。 RFC3986 ドキュメントでは、URL には英語の文字 (a-zA-Z)、数字 (0-9)、-_.~4 の特殊文字、およびすべての予約文字のみを含めることができると規定されています。 RFC3986 では、次の文字を予約文字として指定しています: ! * ' ( ) ; : @ & = + $ , / ? # [ ] 同時に、RFC 3986 仕様は Tomcat 7.0.73 バージョンですでに提案されており、RFC 7230 も前者の補足または改良であるため、この問題は Tomcat 7.0.73 以降で発生します。 注: この状況は IE ブラウザでのみ発生します。IE ブラウザは中国語のパラメータをエンコードしませんが、他の種類のブラウザはデフォルトで自動的に中国語をエンコードします。 3. 解決策 方法 1: Tomcat のバージョンを下げる。 テストの結果、インターネット上の Tomcat の最大バージョン要件の説明が間違っていることが判明しました。7.0.73 より低いバージョンである必要はありません。 tomcat7.0.70 をダウンロードしました。プロジェクトを実行した後も、文字セット エラーが残っており、Web ページを開くことができませんでした。 しかし、tomcat7.0.61 をテストしたところ、プロジェクトは完全に正常に実行されました。コンソールにエラーが報告されなくなり、Web ページを正常に開くことができました。 64 ビットのダウンロード アドレス: https://archive.apache.org/dist/tomcat/tomcat-7/v7.0.61/bin/apache-tomcat-7.0.61-windows-x64.zip 32 ビットのダウンロード アドレス: https://archive.apache.org/dist/tomcat/tomcat-7/v7.0.61/bin/apache-tomcat-7.0.61-windows-x86.zip 方法 2: GET リクエストを POST リクエストに変更する (推奨) 方法3: リクエストの取得(疑問符パラメータの受け渡し) URIEncoder()関数を使用して中国語の文字をエンコードする 以上がTomcat例外解決方法(リクエスト対象に無効な文字が見つかりました。有効な文字はRFC 7230とRFC 3986で定義されています)の詳細な内容です。Tomcat例外解決方法の詳細については、123WORDPRESS.COMの他の関連記事に注目してください! 以下もご興味があるかもしれません:
|
<<: MySQL データベースのバックアップ プロセスに関する注意事項
>>: js を使用して USB スキャナー データを取得する方法
目次クロスドメインの理由JSONP Nginxソリューションバックエンドソリューションクロスドメイン...
目次1. 三項演算子の判定2. 動的に設定されるクラス3. 方法判定4. 配列バインディング5. e...
序文この記事は主にMySQLの主キー0と主キー自己排除制約の関係を紹介し、皆さんの参考と学習のために...
この記事の例では、Vueモバイル端末で指のスライド効果を実現するための具体的なコードを紹介します。具...
静的ノードはマシン上に固定されており、いくつかの固定コマンドを通じて起動されます。動的ノードには複数...
最近Ubuntu 20.04をインストールしましたが、Wi-Fiに接続できず、Wi-Fiアイコンも表...
今日、PHP を学習する場合、当然ながら、まず実行環境をインストールする必要があります。Phpstu...
この記事の例では、グラフィック検証コードを実装するためのVueプロジェクトの具体的なコードを参考まで...
例:場所のルートとエイリアスルートディレクティブは、ルートによって設定されたディレクトリに検索ルート...
序文しばらく前にMysqlのデッドロック問題に遭遇したので、解決しました。問題の説明: Mysql ...
目次コンポーネント - タイムラインカスタムノードスタイルカスタムタイムスタンプコンポーネント - ...
目次序文1. wgetを使用して単一のファイルをダウンロードする2. wget -Oを使用してダウン...
1. 仮想環境はプロジェクトに従い、単一のプロジェクト用の仮想環境を作成します(Python 3.4...
序文スタンドアロン ロックであっても分散ロックであっても、共有データに基づいて現在の操作の動作を判断...
AWS - Amazon のクラウド コンピューティング サービス プラットフォーム以前、AWS の...