91 votes

URI commençant par deux barres obliques ... comment se comportent-ils?

Dernièrement, j'ai vu des blocs de code fonctionnant comme ceci:

 <script type="text/javascript" src="//ajax.googleapis.com/ajax/libs/jquery/1.3.2/jquery.min.js"></script>
 

Et selon les RFC 2396 (syntaxe d'URI) et RFC 2616 (HTTP 1.1), ces URI commençant par deux barres obliques sont valides, mais malheureusement, les RFC ne les expliquent pas vraiment.

Quelqu'un peut-il m'indiquer une ressource qui explique comment les navigateurs vont / devraient / doivent traiter ces URI?

86voto

Daniel Vassallo Points 142049

La ressource que vous recherchez est la RFC 3986.

Voir la Section 4.2 et la Section 5.4. Citant le dernier:

Référence Exemples De Résolution De

Au sein d'une représentation avec une URI de base:

    http://a/b/c/d;p?q

une référence relative est transformé à son URI cible comme suit:

  "g:h"           =  "g:h"
  "g"             =  "http://a/b/c/g"
  "./g"           =  "http://a/b/c/g"
  "g/"            =  "http://a/b/c/g/"
  "/g"            =  "http://a/g"
  "//g"           =  "http://g"
  "?y"            =  "http://a/b/c/d;p?y"
  "g?y"           =  "http://a/b/c/g?y"
  "#s"            =  "http://a/b/c/d;p?q#s"
  "g#s"           =  "http://a/b/c/g#s"
  "g?y#s"         =  "http://a/b/c/g?y#s"
  ";x"            =  "http://a/b/c/;x"
  "g;x"           =  "http://a/b/c/g;x"
  "g;x?y#s"       =  "http://a/b/c/g;x?y#s"
  ""              =  "http://a/b/c/d;p?q"
  "."             =  "http://a/b/c/"
  "./"            =  "http://a/b/c/"
  ".."            =  "http://a/b/"
  "../"           =  "http://a/b/"
  "../g"          =  "http://a/b/g"
  "../.."         =  "http://a/"
  "../../"        =  "http://a/"
  "../../g"       =  "http://a/g"

Cela signifie que lorsque l'URI de base est de http://a/b/c/d;p?q et que vous utilisez //g, la référence relative est transformée http://g.

61voto

Pekka 웃 Points 249607

Ce sont de protocole d'Url relatives. Ils pointent vers une adresse, en gardant le protocole actuel.

Cette notation est souvent utilisé pour éviter le "contenu mixte" problème (IE message d'avertissement se plaindre http et https ressources sur la même page HTTPS).

Mise à jour: documentation Officielle dans la RFC 3986:

Une référence relative commençant par deux caractères barre oblique est appelé un réseau de chemin de référence; ces références sont rarement utilisés. Un référence relative, qui commence par un caractère barre oblique est appelé un absolu-chemin de référence. Une référence relative, qui ne commence pas par un caractère barre oblique est appelé un parent-chemin de référence.

30voto

meder Points 81864

Ce sont des urls indépendantes du protocole. Si la page Web est servie sur https, la requête utilise https, si http puis http.

Paul Irish semble les avoir popularisé en l'incluant dans son code standard.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X