bonfhir / terminology-server

FHIR Terminology Server bootstrapping tools built on HAPI FHIR
0 stars 1 forks source link

Enable Relaxed Query Characters to Support FHIR Search Parameters #20

Closed biximilien closed 6 months ago

biximilien commented 6 months ago

The Bonfhir queries are failing on the Tomcat based server. These work fine on the Jetty based instance.

A quick google search of the issue suggests to check if the Tomcat server is configured to support UTF-8 in the url, else it may be possible to relax certain characters. I suspect it's the | character that is used in FHIR code-system|code type queries as removing this character removes this issue

2024-02-23 16:04:39.378 [http-nio-8080-exec-2] INFO  o.a.coyote.http11.Http11Processor [DirectJDKLog.java:175] Error parsing HTTP request header
 Note: further occurrences of HTTP request parsing errors will be logged at DEBUG level.
java.lang.IllegalArgumentException: Invalid character found in the request target [/fhir/AuditEvent?outcome=0&type=http%3A%2F%2Fdicom.nema.org%2Fresources%2Fontology%2FDCM|110107 ]. The valid characters are defined in RFC 7230 and RFC 3986
    at org.apache.coyote.http11.Http11InputBuffer.parseRequestLine(Http11InputBuffer.java:482)
    at org.apache.coyote.http11.Http11Processor.service(Http11Processor.java:263)
    at org.apache.coyote.AbstractProcessorLight.process(AbstractProcessorLight.java:63)
    at org.apache.coyote.AbstractProtocol$ConnectionHandler.process(AbstractProtocol.java:926)
    at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1791)
    at org.apache.tomcat.util.net.SocketProcessorBase.run(SocketProcessorBase.java:52)
    at org.apache.tomcat.util.threads.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1191)
    at org.apache.tomcat.util.threads.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:659)
    at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61)
    at java.base/java.lang.Thread.run(Thread.java:840)
biximilien commented 6 months ago

This is in fact not an encoding issue with Tomcat. It is a security feature and we simply need to allow these characters by adding the server.tomcat.relaxed-query-chars=|[] property to support FHIR search parameters