javax.servlet.ServletException when URL consists of non ASCII characters

Hi all,

I faced with problem.
We are using Vaadin 7.7.9 and Tomcat 8.5
When URL to our application consists of non ASCII characters i get URISyntaxException which is thrown by Vaadin source code.
Sample URL: http://localhost:8080/myApp/ывапывап - contains cyrillic characters and there is no prefix before this incorrect view name.

javax.servlet.ServletException: com.vaadin.server.ServiceException: java.lang.RuntimeException: Invalid location URI received from client
com.vaadin.server.VaadinServlet.service(VaadinServlet.java:382)
javax.servlet.http.HttpServlet.service(HttpServlet.java:729)
org.apache.tomcat.websocket.server.WsFilter.doFilter

com.vaadin.server.ServiceException: java.lang.RuntimeException: Invalid location URI received from client
com.vaadin.server.VaadinService.handleExceptionDuringRequest(VaadinService.java:1474)
com.vaadin.server.VaadinService.handleRequest(VaadinService.java:1434)
com.vaadin.server.VaadinServlet.service(VaadinServlet.java:380)
javax.servlet.http.HttpServlet.service(HttpServlet.java:729)
org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52)

java.lang.RuntimeException: Invalid location URI received from client
com.vaadin.server.Page.init(Page.java:653)
com.vaadin.ui.UI.doRefresh(UI.java:737)


The problem exists only for IE browser.
In my case it was found using IE 11. For other browsers this can’t be reproduced.

I found this issue: https://vaadin.com/forum/#!/thread/4440607/14473146 wich was not resolved. It relates to this ticket https://dev.vaadin.com/ticket/16665 which is still open.

I found that problem occurs in Page init() method, because parameter “v-loc” is not encoded in UTF-8 (URI → IRI).
In attachments you can find traffic that was captured by tcpdump on server. I will attach some screenshots from debugger.

Can you please look into this issue and suggest any solution/workaround? Any help will be appreciated.
Thanks in advance.

P.S. Tick on “Send UTF-8 query strings” in IE did not affect (as described here: https://blogs.msdn.microsoft.com/ieinternals/2014/04/22/unicode-in-url-changes-for-ie11/)
33106.png
33107.png
33108.png
33109.png

The root cause of the issue seems to be a bug in IE11, that has been closed as won’t fix

https://connect.microsoft.com/IE/feedback/details/857431/unescaped-non-ascii-characters-in-url-query-being-completely-broken

In the comments there is link also to the blog post you referred. Can this be circumvented in Vaadin some way, I am not sure.