Почему HttpServletRequest усекает ввод URL-адреса на символе #?

Следующий сервлет читает параметр пути URL. Проблема: если вход содержит специальные символы, например, я обнаружил #то строка обрезается!

@RestController
public class MyServlet {    
    @GetMapping("/hash")
    @ApiIgnore
    public String hash(HttpServletRequest req) {
        String pw = req.getPathInfo(); //asdfgh
    }
}

`localhost:8080/hash/asdfgh#jkl`

Вопрос: как я могу пройти через входной параметр?

1 ответ

Решение

Часть, начинающаяся с # не отправлено / не получено вашим сервлетом.
Это информация, используемая только со стороны клиента (браузера) и не являющаяся частью URI.

RFC2396 действительно утверждает:

Когда ссылка URI используется для выполнения действия поиска на идентифицированном ресурсе, необязательный идентификатор фрагмента, отделенный от URI символом штриховки ("#"), состоит из дополнительной справочной информации, которая должна интерпретироваться пользовательским агентом после поиска действие было успешно завершено. Как таковой, он не является частью URI, но часто используется вместе с URI.

Другие вопросы по тегам