Как исправить tomcat org.apache.tomcat.util.http.parser.HttpParser. <clinit>Символ [[] недопустим и будет отклонен - PullRequest
0 голосов
/ 20 сентября 2018

В URL-адресе моего запроса есть символы [ и ], и проект развернут на Tomcat8.5.33.Некоторое исключение происходит, когда я отправляю запрос.

20-Sep-2018 10:55:36.494 WARNING [http-nio-8075-exec-2] org.apache.tomcat.util.http.parser.HttpParser.<clinit> Character [[] is not allowed and will continue to be rejected.
20-Sep-2018 10:55:36.494 WARNING [http-nio-8075-exec-2] org.apache.tomcat.util.http.parser.HttpParser.<clinit> Character []] is not allowed and will continue to be rejected.
20-Sep-2018 10:56:07.083 INFO [http-nio-8075-exec-10] org.apache.coyote.http11.Http11Processor.service Error parsing HTTP request header
 Note: further occurrences of HTTP header parsing errors will be logged at DEBUG level.
 java.lang.IllegalArgumentException: Invalid character found in the request target. The valid characters are defined in RFC 7230 and RFC 3986
    at org.apache.coyote.http11.Http11InputBuffer.parseRequestLine(Http11InputBuffer.java:479)
    at org.apache.coyote.http11.Http11Processor.service(Http11Processor.java:684)
    at org.apache.coyote.AbstractProcessorLight.process(AbstractProcessorLight.java:66)
    at org.apache.coyote.AbstractProtocol$ConnectionHandler.process(AbstractProtocol.java:806)
    at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1498)
    at org.apache.tomcat.util.net.SocketProcessorBase.run(SocketProcessorBase.java:49)
    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
    at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61)
    at java.lang.Thread.run(Thread.java:748)

Ответы [ 2 ]

0 голосов
/ 20 сентября 2018

Tomcat8.5.33 не допускает использование специальных символов в URL, например |{}[].И есть два способа избежать этой ошибки.

Если ваш специальный символ - один из |{}, вы можете добавить конфигурацию conf\catalina.properties, как показано ниже:

tomcat.util.http.parser.HttpParser.requestTargetAllow=|{}

Если ваш специальныйнекоторые символы, вы можете настроить conf\server.xml, как показано ниже:

<Connector port="8075" protocol="HTTP/1.1" relaxedQueryChars='|[]'
               connectionTimeout="20000"
               redirectPort="8443" />
0 голосов
/ 20 сентября 2018

В URL моего запроса есть символы [ и ] ....

Это проблема.Вы отправляете на сервер запрос с неверным URL.Действительный URL не может содержать [ и ] ... за исключением IP-литерала в части хоста.Они должны быть% -экранированы во всех остальных случаях.

Правильное решение заключается в исправлении ваших URL-адресов и / или программного обеспечения, которое генерирует их на стороне клиента.

Tomcat просто применяет правила в спецификациях URL / URI ... которые были в спецификации в течение последних 20+ лет.

Ссылка:

...