использование # в URL в качестве ключа значения

StackOverflow https://stackoverflow.com//questions/25076223

  •  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, вероятно, плохая идея.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top