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 スキャナー データを取得する方法
目次序文システム環境現在のシステムパーティションレイアウトデータのバックアップレスキューモードに入る...
目次序文オプションの連鎖ヌル結合呼び出されていない関数のチェック他の序文TypeScript 3.7...
最近、プロジェクトは環境を切り替え、WebLogic を Tomcat に置き換えました。途中で発生...
HTML ノードの追加と削除の簡単な例 HTML ノードの追加と削除の簡単な例<input t...
目次背景効果アイデア背景少し前に、会社のプロジェクトで問題が発生しました。地図のベースマップ領域の範...
この記事の例では、参考までにvueタイムラインコンポーネントの具体的な実装コードを共有しています。具...
1. はじめにコンテナはサンドボックス メカニズムを使用して相互に分離します。コンテナ内にデプロイさ...
序文MySQL マスター スレーブ レプリケーションの遅延は、業界では長年の問題となっています。遅延...
この記事では、MySQL 8.0.11 MSIバージョンのインストールと設定のチュートリアルを参考ま...
MySQLユーザー権限を表示する2つの方法を紹介します1. MySQL grantsコマンドを使用す...
背景モバイル デバイスでは、ページ ジャンプ間のキャッシュが必須要件です。例: ホームページ =&g...
FRAME プロパティを使用して、表の境界線のスタイル タイプを制御します。基本的な構文<T...
この記事では、デジタル時計効果を実現するためのJavaScriptの具体的なコードを参考までに紹介し...
目次序文SVGを生成するSVGスプライトの紹介プロジェクトアイコンを取得するプロジェクトのセットアッ...