私の再生では次の例外が発生しました。 Tomcat上で動作しているアプリケーション:this thread角括弧によるとURLの角括弧がTomcatで例外を発生させます
javax.servlet.ServletException: java.net.URISyntaxException: Illegal character in path at index 35: /K-NAAN/lyrics/Is-Anybody-Out-There[]-lyrics/3807088
play.server.ServletWrapper.service(ServletWrapper.java:157)
javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
root cause
java.net.URISyntaxException: Illegal character in path at index 35: /K-NAAN/lyrics/Is-Anybody-Out-There[]-lyrics/3807088
java.net.URI$Parser.fail(Unknown Source)
java.net.URI$Parser.checkChars(Unknown Source)
java.net.URI$Parser.parseHierarchical(Unknown Source)
java.net.URI$Parser.parse(Unknown Source)
java.net.URI.<init>(Unknown Source)
play.server.ServletWrapper.parseRequest(ServletWrapper.java:241)
play.server.ServletWrapper.service(ServletWrapper.java:132)
javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
はURIで有効な文字ではありません、それはそれらをエンコードするために、クライアントの責任ですか? MacOSではChromeで例外が発生しますが、Firefoxではそうではありませんが、これはChromeがそれらをエンコードしないことを暗示しているようです。さらに悪いことに、私はかなりgooglebotもその例外に遭遇していると確信しています。
ここで正しい行動方法は何ですか?
角かっこを受け入れたりエンコードしたりするためにTomcatを微調整できますか?それとも、Playのバグですか?
私のページへのすべてのリンクにURLエンコードされた角かっこが付いていることを確認してください。私自身のウェブサイトでは可能ですが、外部リンクにはそれほど多くはありません。
あなたの最後のこと:あなたのページへのすべてのリンクは、大括弧で囲まれたURLをエンコードする必要があります。無効なURLを送信している任意のクライアントを制御することはできません。 – jtahlborn