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 スキャナー データを取得する方法
1. MySQLリポジトリソースをダウンロードする$ wget http://repo.mysql....
序文同社の Ubuntu サーバーは、さまざまなシステムのディレクトリを異なる論理パーティションに配...
このチュートリアルの動作環境: Windows 7 システム、MySQL 8 バージョン、Dell ...
フローティング広告は、ウェブサイト上で非常に一般的な広告形式です。フローティング広告は、ユーザーの閲...
MySQL では、データベースはデータ ディレクトリ内のディレクトリに対応します。データベース内の各...
フォルダを作成するディレクトリ構造: dabaots npm init -yを初期化して packa...
1. チューニングの必要性 私は、どのように書けばいいのか本当に分からないので、共有するために最適...
この記事の例では、参考までに、シンプルなショッピングカートモジュールを実装するためのjsの具体的なコ...
公式サイトからMySQL-5.7.11-winx64の圧縮版をダウンロード。インストール後、パスワー...
Navicat を使用して IP 経由で直接接続すると、次のようなさまざまなエラーが報告されます: ...
DockerでOracle_11gをインストールする1. oracle_11gイメージを取得する d...
目次Node.jsとはNodeJSをインストールするNode を使用して Hello World を...
今日はベテランの貴重な経験を共有します。著者は技術管理の経験が7年あり、多い時は80人以上を率いてい...
デフォルトでは、CentOS 7 上の PHP は apache または nobody として実行さ...