URL sans "http | https"


89

Je viens d'apprendre d'un collègue que l'omission de la partie "http | https" d'une URL dans un lien fera que cette URL utilisera le schéma utilisé par la page sur laquelle elle se trouve.

Par exemple, si ma page est accessible à l' adresse http://www.example.com et que j'ai un lien (notez le '//' à l'avant):

<a href="https://www.google.com">Google</a>

Ce lien sera redirigé vers http://www.google.com .

Mais si j'accède à la page https://www.example.com avec le même lien, elle ira à https://www.google.com

Je voulais chercher en ligne plus d'informations à ce sujet, mais j'ai du mal à trouver une bonne phrase de recherche. Si je recherche des "URL sans HTTP", les pages renvoyées concernent des URL avec cette forme: "www.example.com", ce qui n'est pas ce que je recherche.

Appelleriez-vous cela une URL sans schéma? Une URL sans protocole?

Cela fonctionne-t-il dans tous les navigateurs? Je l'ai testé dans FF et IE 8 et cela a fonctionné dans les deux. Cela fait-il partie d'une norme, ou devrais-je tester plus de navigateurs?



1
Pour référence (puisque vous avez demandé quels termes rechercher), la recherche Google qui m'a amené à la question StackOverflow originale était: "URL absolue sans protocole"
David

vous ne spécifiez pas s'il s'agit d'un http ou https, le navigateur décide donc à votre place en prenant la dernière page en supposant que le lien provient de la même page.
raym0nd

Merci David, le lien vers le duplicata a répondu à toutes mes questions
topher-j

1
@David: Pour être exactement, vous ne l'appelleriez pas une URL absolue si elle n'a pas de protocole; c'est plutôt une URL relative.
Gumbo

Réponses:



15

Il est appelé référence de chemin de réseau (la partie manquante est appelée schemeou protocol) définie dans la RFC3986 Section 4.2

4.2 Référence relative

Une référence relative tire parti de la syntaxe hiérarchique (section 1.2.3) pour exprimer une référence URI par rapport à l'espace de nom d'un autre URI hiérarchique.

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

  relative-part = "//" authority path-abempty
                / path-absolute
                / path-noscheme
                / path-empty

L'URI désignée par une référence relative, également appelée URI cible, est obtenue en appliquant l'algorithme de résolution de référence de la section 5.

Une référence relative commençant par deux barres obliques est appelée une référence de chemin de réseau (c'est moi qui souligne); ces références sont rarement utilisées. Une référence relative qui commence par un seul caractère barre oblique est appelée une référence de chemin absolu. Une référence relative qui ne commence pas par une barre oblique est appelée une référence de chemin relatif.

Un segment de chemin qui contient un caractère deux-points (par exemple, "ceci: cela") ne peut pas être utilisé comme premier segment d'une référence de chemin relatif, car il serait confondu avec un nom de schéma. Un tel segment doit être précédé d'un segment de point (par exemple, "./this:that") pour faire une référence de chemin relatif.


// ne peut pas être utilisé dans la balise de base en html. J'ai défini <base href = "// abc.com/" et une url d'image relative <img src = "/ img / logo.jpg>. Cependant, ouvert sur le navigateur, le lien image deviendra file: /// abc. com / img / logo.jpg. Une solution de contournement?
Scott Chu
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.