использование # в URL в качестве ключа значения
-
02-01-2020 - |
Вопрос
Мой Java-сервер работает следующим образом:
http://locahost:5555/?search="java"
Ссылка выше будет работать нормально.Однако, если я когда-нибудь захочу использовать «#» как часть строки поиска, все пойдет не так.Например:
http://locahost:5555/?search="c#"
По какой-то причине все, что после «#», игнорируется.Если я использую декодированную версию «#», она снова работает нормально.Например:
http://locahost:5555/?search="c%23"
Систему следует использовать людям, которые не понимают кодировку URL-адресов, чтобы они никогда не ставили %23 вместо #.Есть ли что-нибудь вокруг этого?
Решение
Пользователь, предположительно, не должен добраться до URL напрямую, так что если они поставили «C #» в URL, не будет никакого процесса, с другой стороны, вы можете использовать
<form action="yourcontroller" method="post">
<input type="text" name="txtSearch" />
<input type="submit" value="search"/>
</form>
.
с этим, это позаботится о специальных символах, таких как «#», вы упомянули.
Не забудьте поймать параметр в вашем контроллере
request.getParamter("txtSearch");
. Другие советы
Кроме кодирования, нет другого способа обойти это.Подробнее о строке после #
рассматривает как location
URL-адреса.
Строка после #
не будут переданы на сервер через параметры GET.Вместо этого используйте метод POST.
https://developer.mozilla.org/en-US/docs/Web/API/Window.location
Это в браузере.Сервер никогда не получает запрос с символом Hashtag (#), а только в зависимости от символа.
Оборудование JavaScript, вероятно, плохая идея.