à l'aide de # dans l'URL de la valeur de la clé
-
02-01-2020 - |
Question
Mon java server fonctionne comme suit:
http://locahost:5555/?search="java"
Le lien ci-dessus va fonctionner très bien.Toutefois, si jamais je veux utiliser "#" dans le cadre de la chaîne de recherche, tout va mal.Par exemple:
http://locahost:5555/?search="c#"
Pour une raison que tout ce qui est après "#" est ignorée.Si j'utilise la version décodée de "#" il fonctionne bien à nouveau.Par exemple:
http://locahost:5555/?search="c%23"
Le système doit être utilisé par des personnes qui ne comprennent pas le codage d'url, de sorte qu'ils n'auraient jamais mis %23 au lieu de #.Est-il de toute façon autour d'elle?
La solution
L'utilisateur supposément ne devrait pas accéder directement à l'URL directement, si elles mettent "C #" dans l'URL, il n'y aurait aucun processus d'autre part que vous pourriez utiliser
<form action="yourcontroller" method="post">
<input type="text" name="txtSearch" />
<input type="submit" value="search"/>
</form>
Avec cela, il prendra soin des caractères spéciaux comme "#" que vous avez mentionné.
N'oubliez pas d'attraper le paramètre de votre contrôleur
request.getParamter("txtSearch");
Autres conseils
Autres que l'encodage il n'y a pas moyen de contourner cela.De plus au cours de la chaîne après #
traite comme l' location
de l'URL.
La chaîne après #
ne sera pas transmis au serveur par le biais de paramètres GET.L'utilisation de la méthode POST à la place.
https://developer.mozilla.org/en-US/docs/Web/API/Window.location
C'est dans le navigateur.Le serveur ne reçoit jamais une demande avec le symbole HASHTAG (#), juste au symbole.
Une solution de contournement JavaScript est probablement une mauvaise idée.