Zasób, którego szukasz, to RFC 3986 .
Patrz sekcja 4.2 i sekcja 5.4. Cytując z tego ostatniego:
Przykładowe rozwiązania referencyjne
W ramach reprezentacji z dobrze zdefiniowanym podstawowym identyfikatorem URI:
http:
odniesienie względne jest przekształcane na jego docelowy identyfikator URI w następujący sposób:
"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"
Oznacza to, że gdy podstawowy identyfikator URI jest http://a/b/c/d;p?q
używany //g
, a odniesienie względne jest przekształcane na http://g
.
../g
- użyje bieżącego protokołu i doprowadzi dohttp://a/b/c/g
.xml:base
do jawnego ustawienia dowolnego elementu . Domyślnie w HTML podstawowy URI jest tym samym URI strony (ale wewnątrz pliku CSS podstawowy URI jest względny w stosunku do CSS uri, a nie do zawierającego HTML , ale starszy IE uczynił go względnym względem HTML). W innych protokołach i językach może być inny (na przykład w XSLT zależy to od bieżącego elementu). Zobacz także<html:base>
.http
! Zależy to od protokołu kontekstu strony. Jeśli kontekst został załadowany podhttp://a/b/c/d;p?q
, to//g
rzeczywiście jest rozwiązywany nahttp://g
. Ale jeśli strona została załadowana jako,http://a/b/c/d;p?q
wynik będziehttps://g
. A także nie zapomnij o innych protokołach, takich jakfile://
(strona ładuje się z dysku) - co z pewnością przyprawi Cię o wiele bólu głowy.Są to adresy URL zależne od protokołu. Wskazują na adres, zachowując aktualny protokół.
Notacja ta jest często używana, aby uniknąć problemu z „mieszaną zawartością” (komunikat ostrzegawczy IE dotyczący reklamacji
http
ihttps
zasobów na tej samej stronie HTTPS).Aktualizacja: Oficjalna dokumentacja w RFC 3986:
źródło
Są to adresy URL niezależne od protokołu. Jeśli strona internetowa jest obsługiwana za pomocą protokołu https, żądanie używa protokołu https, jeśli http to http.
Wydaje się, że Paul Irish spopularyzował je, włączając je do swojego standardowego kodu.
źródło
Należy pamiętać, że jest to nie tylko niezależny od http lub https , ale także plik , ftp itp.
Oznacza to, że jeśli otworzysz plik .htm bezpośrednio w przeglądarce na hoście lokalnym, przeglądarka rozwiąże // jako protokół pliku i Twoja strona nie będzie działać. Może powodować problemy w spakowanych witrynach internetowych jako „natywna” aplikacja korzystająca z narzędzi takich jak Electron, PhoneGap itp.
Przykład:
<script src="//mywebsite.com/resource.js"></script>
do
<script src="file://mywebsite.com/resource.js"></script>
źródło