web-dev-qa-db-fra.com

link/href avec seulement des paramètres (commençant par un point d'interrogation) est-il valide?

Ce lien est-il valide?

<a href="?lang=en">eng</a>

Je sais que les navigateurs le traitent comme prévu et que le lien vide conviendrait aussi - mais est-il correct de spécifier uniquement les paramètres?

Je suis curieux parce que le point d'interrogation ("?") N'est qu'une convention de la plupart des serveurs HTTP (autant que je sache), bien que j'admette que c'est un principe dominant.

Donc, pour récapituler:

  1. est-ce que tous les navigateurs vont interpréter cela correctement?

  2. est-ce dans RFC?

  3. puis-je m'attendre à des problèmes d'utilisation?

UPDATE: l'action souhaitée au clic est de rediriger vers la même page, mais avec des paramètres GET différents ("lang = en" dans l'exemple ci-dessus).

43
johndodo

Oui, ça l'est.
Vous pouvez le trouver dans RFC 1808 - Localisateurs de ressources uniformes relatives :

Dans un objet avec une URL de base bien définie de
Base: <URL:http://a/b/c/d;p?q#f>
les URL relatives seraient résolues comme suit:

5.1. Exemples normaux

?y = <URL:http://a/b/c/d;p?y>

RFC 3986 - Identificateur de ressource uniforme (URI): Syntaxe générique répète la même chose et ajoute plus de détails, y compris la grammaire:

relative-ref  = relative-part [ "?" query ] [ "#" fragment ]

relative-part = "//" authority path-abempty
             / path-absolute
             / path-noscheme
             / path-empty     #; zero characters

Cela ne veut pas dire que tous les navigateurs l'implémentent conformément à la norme, mais il semble que cela devrait être sûr.

38
Kobi

Oui - et l'URL actuelle apparaîtra avec les paramètres que vous transmettez.

Il est très pratique à utiliser dans les situations où vous voulez vous assurer de ne pas dépasser la limite de page/de formulaire actuelle et de continuer à frapper la même ActionMethod ou ce que vous écoutez avec des paramètres différents. 

0
Matas Vaitkevicius