L'URL suivante fonctionne bien:
Cependant, si je veux mettre des caractères spéciaux dans `param tels que?, /, \, Alors l'URL devient:
ou
http: // localhost/mysite/mypage? param = http: //www.mysite.com/page2? a = \ & b = ...
qui ne fonctionnera pas. Comment résoudre ce problème?
Vous devez encoder des caractères spéciaux dans les URL. Voir: http://www.w3schools.com/tags/ref_urlencode.asp
Vous devez encoder les paramètres de la requête avant de les combiner pour former une URL. La fonction nécessaire ici est encodeURIComponent . Par exemple,
l'URL que vous devez créer est:
http://localhost/mysite/mypage?param=a=?&b=/
Maintenant, en supposant que? et/en tant que variables, vous devez les encoder avant de placer l’URL . Nous allons donc créer votre URL en utilisant cette fonction (j’attends deux paramètres de requête):
var q1 = "a=?"; //came from some input or something
var q2 = "/"; //came from somewhere else
var faultyUrl = "http://localhost/mysite/mypage?param="+ q1 +"&b=" + q2;
// "http://localhost/mysite/mypage?param=a=?&b=/"
var properUrl = "http://localhost/mysite/mypage?param="+ encodeURIComponent(q1) +"&b=" + encodeURIComponent(q2);
//"http://localhost/mysite/mypage?param=a%3D%3F&b=%2F"
Cette fonction est en base JS et supportée par tous les navigateurs.
En JavaScript, vous pouvez utiliser la fonction encodeURI () .
ASP a la fonction Server.URLEncode () .
HttpServerUtility.UrlEncode dans .NET
Un moyen facile de transmettre la valeur QueryString avec un caractère spécial en utilisant javascript:
var newURL=encodeURIComponent(uri);
window.location="/abc/abc?q="+newURL;
Vous devez utiliser des caractères spéciaux, voir this page pour une référence.
Si vous utilisez PHP, il existe une fonction pour le faire, appelée urlencode () .
Vous devez remplacer les caractères par des entités URL . Certaines informations ici.