Est-il valable d'avoir plus d'un point d'interrogation dans l'URL?

j'ai trouvé l'URL suivante aujourd'hui:

http://www.sfgate.com/cgi-bin/blogs/inmarin/detail??blogid=122&entry_id=64497

Notez le double point d'interrogation au début de la chaîne de requête:

??blogid=122&entry_id=64497

mon navigateur ne semblait pas avoir de problème avec elle, et l'exécution d'un bookmarklet rapide:

javascript:alert(document.location.search);

vient de me donner la chaîne de requête montrée ci-dessus.

est-ce une URL valide? La raison pour laquelle je suis si pédant (en supposant que je suis) est parce que j'ai besoin pour analyser des URLs comme celle-ci pour les paramètres de requête, et pour supporter des points d'interrogation doublés, il faudrait apporter quelques modifications à mon code. Évidemment s'ils sont dans la nature, je vais avoir besoin de les soutenir; je suis principalement curieux si c'est ma faute de ne pas adhérer aux normes D'URL exactement, ou si c'est en fait une URL non standard.

73
demandé sur Justin Johnson 2010-05-27 23:19:15

2 réponses

Oui, il est valide. Seul le premier ? dans une URL a une signification, n'importe après qu'il soit traité comme des points d'interrogation littérale:

Le composant de requête est indiqué par le premier point d'interrogation ("?") caractère et terminé par un nombre signe ("#") ou par la fin de URI.

...

les caractères slash ( " / " ) et question marque ("?") peuvent représenter des données dans le composant de requête. Méfier que certains anciens, erronée les implémentations peuvent ne pas traiter les données correctement lorsqu'il est utilisé comme URI de base pour les références relatives (Section 5.1), apparemment parce qu'ils ne pas distinguer les données de requête données de chemin lors de la recherche séparateurs hiérarchiques. Cependant, comme composants de requête sont souvent utilisés pour transporter des informations d'identification dans les forme des paires "clé=valeur" et une la valeur fréquemment utilisée est référence pour un autre URI, il est parfois mieux pour une utilisabilité à éviter pourcentage d'encodage de ces caractères.

http://tools.ietf.org/html/rfc3986#section-3.4

87
répondu Amber 2010-05-27 19:22:00

comme réponse tangentiellement liée, foo?spam=1?&eggs=3 donne le paramètre spam la valeur 1?

17
répondu Hilton Shumway 2016-02-17 02:18:34