Почему 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.