J'ai une question concernant les URL:
J'ai lu le RFC 3986 et j'ai toujours une question sur une URL:
Si un URI contient un composant d'autorité, le composant de chemin d'accès
doit être vide ou commencer par une barre oblique ("/"). Si un URI ne contient pas de composant d'autorité, le chemin ne peut pas commencer
avec deux barres obliques ("//"). De plus, une référence URI
(Section 4.1) peut être une référence de chemin relatif, auquel cas le
le premier segment de chemin ne peut pas contenir de deux-points (":"). L'ABNF
nécessite cinq règles distinctes pour lever l'ambiguïté de ces cas, dont un seul correspondra à la sous-chaîne de chemin dans une référence URI donnée. Nous utilisons le terme générique "composant de chemin" pour décrire la sous-chaîne URI
correspondant à l'analyseur à l'une de ces règles.
Je le sais //server.com:80/path/info
est valide (il s'agit d'une URL relative au schéma)
Je sais aussi que http://server.com:80/path//info
est valable.
Mais je ne sais pas si la suivante est valide:
http://server.com:80//path/info
Le problème derrière ma question est qu'un cookie n'est pas envoyé à http://server.com:80//path/info
, lorsqu'il est créé par l'URI http://server.com:80/path/info
avec restriction à /path
Voir RL avec plusieurs barres obliques, cela casse-t-il quelque chose? , Y a-t-il des inconvénients à utiliser des doubles barres obliques dans les URL? , Que signifie la double barre oblique dans les URL? et RFC 3986 - Uniform Resource Identifier (URI): syntaxe générique .
Consensus: les navigateurs feront la demande telle quelle, ils ne modifieront pas la demande. Le /
le caractère est le séparateur de chemin, mais comme les segments de chemin sont définis comme:
path-abempty = *( "/" segment )
segment = *pchar
Signifie la barre oblique après http://example.com/
peut être directement suivi d'une autre barre oblique, à l'infini. Les serveurs peuvent l'ignorer, mais pas les navigateurs, comme vous l'avez compris.
La phrase:
Si un URI ne contient pas de composant d'autorité, le chemin ne peut pas commencer par deux barres obliques ("//").
Permet RL relatives au protocole , mais indique spécifiquement dans ce cas aucune autorité (server.com:80
dans votre exemple) peut être présent.
Donc: oui, c'est valable, non, ne l'utilisez pas.