En ce qui concerne les spécifications modernes, oui il est permis de ne pas utiliser la barre oblique. contrairement à ce que le réponse acceptée prétend ici.
Bien que la réponse acceptée cite correctement la RFC 1738 (publiée il y a plus de 20 ans !), elle affirme à tort que la RFC 2396 (publiée en 1998) exige le slash, et néglige le fait que les deux de ces spécifications ont été à leur tour obsolètes par RFC 3986 publié en 2005 (encore plusieurs années avant la rédaction de la réponse acceptée) et plus récemment par la Norme URL du WhatWG qui permettent tous deux d'omettre la barre oblique.
Examinons successivement chacune de ces spécifications, de la plus ancienne à la plus récente :
Implicitement, la barre oblique doit être incluse par précisant qu'il mai être omis si l'URL ne contient ni chemin ni chaîne de requête (appelé searchpart
ici). Les caractères gras ci-dessous sont les miens :
Une URL HTTP prend la forme :
http://<host>:<port>/<path>?<searchpart>
où <host>
y <port>
sont tels que décrits dans Section 3.1 . Si : <port>
est omis, le port a la valeur 80 par défaut. Aucun nom d'utilisateur ou mot de passe n'est mot de passe n'est autorisé. <path>
est un sélecteur HTTP, et <searchpart>
est une requête de requête. Le site <path>
est facultatif, tout comme l'est le <searchpart>
et son précédent " ?". Si aucun des deux <path>
ni <searchpart>
est présent, le "/" peut également être omis.
Ici, il est acceptable d'omettre la barre oblique. Cette RFC légalise certaines syntaxes d'URL bizarres qui n'ont pas de double barre oblique après le schéma, mais si nous les ignorons (ce sont celles qui ont un caractère opaque_part
dans la spécification BNF ) et s'en tiennent aux URL qui contiennent un hôte, alors nous constatons qu'un absoluteURI
est défini comme suit...
absoluteURI = scheme ":" ( hier_part | opaque_part )
et qu'un hier_part
ressemble à ça :
hier_part = ( net_path | abs_path ) [ "?" query ]
et qu'un net_path
ressemble à ça :
net_path = "//" authority [ abs_path ]
où un abs_path
est à son tour défini pour commencer par une barre oblique. Notez que le abs_path
es en option dans la grammaire ci-dessus - cela signifie qu'une URL de la forme scheme://authority?query
est tout à fait légal.
La motivation de ce changement est évoquée dans l'annexe. G.2. Modifications du RFC 1738 et du RFC 1808 :
Le point d'interrogation " ? " a été supprimé de l'ensemble des caractères autorisés pour l'info utilisateur i. autorisés pour les informations sur l'utilisateur dans le composant d'autorité, car les tests ont montré que de nombreuses applications le considèrent comme réservé pour séparer le du reste de l'URI.
En d'autres termes, dans le monde réel, le code partait du principe que le premier point d'interrogation d'une URL, où qu'il soit, marquait le début d'une chaîne d'interrogation.
Là encore, il est permis d'omettre la barre oblique. La spécification exprime cela en disant qu'un "chemin" est requis dans chaque URI qui contient une autorité (hôte), et ce chemin doit o bien commencent par une barre oblique o ne comporte aucun caractère :
3. Composants syntaxiques
La syntaxe générique des URI consiste en une séquence hiérarchique de composants appelés schéma, autorité, chemin, requête et fragment. fragment.
URI = scheme ":" hier-part [ "?" query ] [ "#" fragment ]
hier-part = "//" authority path-abempty
/ path-absolute
/ path-rootless
/ path-empty
Les composants scheme et path sont obligatoires, bien que le path puisse être vide (aucun caractère). Lorsque l'autorité est présente, le chemin doit être vide ou commencer par une barre oblique ("/").
Pour être complet, notons que path-abempty
est ensuite défini ainsi :
path-abempty = *( "/" segment )
Cela permet en effet qu'il ne contienne aucun caractère.
URL standard par le WhatWG (une norme vivante en cours de maintenance active, créée pour la première fois en 2012, dans le but de rendre obsolète le RFC 3986)
Une fois de plus, l'omission de la barre oblique est acceptable, bien que cette fois-ci, nous n'ayons pas de BNF à examiner, mais plutôt besoin de lire beaucoup de prose.
Section 4.3 nous dit :
Un site chaîne absolute-URL doit être l'un des suivants
éventuellement suivi de " ?" et d'une chaîne de requête URL.
Puisque HTTP et HTTPS sont régimes spéciaux En effet, toute URL HTTP ou HTTPS doit satisfaire à la première de ces trois options, c'est-à-dire à la deuxième, http:
o https:
suivi d'un chaîne scheme-relative-special-URL qui :
doit être " //
", suivi d'un chaîne hôte valide éventuellement suivi de " :
" et un Chaîne de l'URL-port éventuellement suivi d'un chaîne path-absolute-URL .
A chaîne path-absolute-URL doit commencer par une barre oblique, mais elle est explicitement facultative dans la définition d'une chaîne URL absolue ci-dessus ; ainsi, il est permis de passer directement de l'hôte à la chaîne " ?
" et la chaîne de requête, et donc des URL comme http://example.com?query
sont légales.
Bien sûr, rien de tout cela ne garantit que chaque serveur Web ou bibliothèque HTTP acceptera ces URL, ni qu'ils les traiteront comme sémantiquement équivalentes à une URL contenant la barre oblique. Mais en ce qui concerne spec va, sauter la barre oblique est tout à fait légal.