usando # en URL como clave de valor
-
02-01-2020 - |
Pregunta
Mi servidor java funciona de la siguiente manera:
http://locahost:5555/?search="java"
El enlace de arriba funcionaría bien.Sin embargo, si alguna vez quiero utilizar "#" como parte de la cadena de búsqueda, todo sale mal.Por ejemplo:
http://locahost:5555/?search="c#"
Por alguna razón, todo lo que sigue a "#" se ignora.Si uso la versión decodificada de "#", vuelve a funcionar bien.Por ejemplo:
http://locahost:5555/?search="c%23"
El sistema debería ser utilizado por personas que no entienden la codificación de URL, por lo que nunca pondrían %23 en lugar de #.¿Hay alguna manera de evitarlo?
Solución
El usuario supuestamente no debe acceder directamente a la URL de manera directa si ponen "C #" en la URL no habría ningún proceso, por otro lado, podría usar
<form action="yourcontroller" method="post">
<input type="text" name="txtSearch" />
<input type="submit" value="search"/>
</form>
Con esto, se encargará de los personajes especiales como "#" que mencionó.
No olvides captar el parámetro en su controlador
request.getParamter("txtSearch");
Otros consejos
Aparte de codificarlo, no hay otra forma de evitarlo.Más sobre la cuerda después #
trata como el location
de la URL.
cadena después #
no se pasará al servidor a través de parámetros GET.Utilice el método POST en su lugar.
https://developer.mozilla.org/en-US/docs/Web/API/Window.location
Está en el navegador.El servidor nunca obtiene una solicitud con el símbolo de hashtag (#), justo hasta el símbolo.
Una solución de javascript es probablemente una mala idea.