Dois-je encoder un paramètre de chaîne de requête qui est une URL?
Juste dire que j'ai l'url suivante qui a un paramètre de chaîne de requête qui est une url:
http://www.someSite.com?next=http://www.anotherSite.com?test=1&test=2
Dois-je encoder la next
paramètre? Si je le fais, qui est responsable de décodage - le navigateur web, ou de mon application web?
La raison pour laquelle je demande c'est que je vois beaucoup de gros sites qui font des choses comme la suivante
http://www.someSite.com?next=http://www.anotherSite.com/another/url
Ci-dessus, ils ne s'embarrassent pas de codage de la next
paramètre parce que je devine, ils savent qu'il n'ont pas de paramètres de chaîne de requête elle-même. Est-ce ok pour faire si mon next
url ne comprend pas les paramètres de chaîne de requête ainsi?
Vous devez vous connecter pour publier un commentaire.
La RFC 2396 sec. 2.2 dit que vous devez encoder ces symboles partout où ils ne sont pas utilisés pour leurs explicite de la signification; c'est à dire, vous devriez toujours
targetUrl + '?next=' + urlencode(nextURL)
.Le navigateur web n'a pas de "décoder" ces paramètres à tous; le navigateur ne sait rien sur les paramètres mais juste passe le long de la chaîne. Une chaîne de requête de la forme
http://www.example.com/path/to/query?param1=value¶m2=value2
est GET-demandée par le navigateur comme:Sur le backend, vous aurez besoin d'analyser les résultats. Je pense que PHP
$_REQUEST
matrice de l'avoir déjà fait pour vous; en d'autres langues, vous aurez envie de diviser au cours de la première?
caractère, puis divisée sur la&
caractères, puis divisés sur la première=
caractère, puis urldecode à la fois le nom et la valeur.