Und gemäß RFC 2396 (URI-Syntax) und RFC 2616 (HTTP 1.1) sind diese URI beginnend mit zwei Schrägstrichen gültig, aber leider erklären die RFCs sie nicht wirklich.
Kann mich jemand auf eine Ressource verweisen, die erklärt, wie Browser diese URIs verarbeiten werden / sollten / tun?
So kann dies eine Lösung für die Verwendung von Javascript sein, um http oder https auf diese Weise zu bestimmen, was auch immer es funktionieren wird
Ibu
Da Sie die übergeordnete Ebene erreichen müssen, verwenden Sie ../g- es wird das aktuelle Protokoll verwenden und zu führen http://a/b/c/g.
Boris S
Es mag eine Anfängerfrage sein, aber woher kommt diese Basis-URI? die Browser-URL-Leiste? der Kellner? ein Tag in der HTML-Seite?
Coderatchet
1
@thenaglecode: Die Antwort ist, es kommt darauf an. In XML / XHTML / HTML5 können Sie verwenden , xml:baseum es explizit auf ein beliebiges Element gesetzt . Standardmäßig ist der Basis-URI in HTML derselbe URI der Seite (aber in einer CSS-Datei ist der Basis-URI relativ zum CSS- URI , nicht zum enthaltenden HTML , aber der ältere IE hat ihn relativ zum HTML erstellt). In anderen Protokollen und Sprachen kann dies unterschiedlich sein (in XSLT hängt es beispielsweise vom aktuellen Element ab). Siehe auch <html:base>.
Abel
1
Wichtig - das Ergebnis ist nicht immer http! Dies hängt vom Protokoll des Seitenkontexts ab. Wenn der Kontext unter geladen wurde http://a/b/c/d;p?q, wird //gtatsächlich in aufgelöst http://g. Wenn die Seite jedoch so geladen wurde, http://a/b/c/d;p?qist das Ergebnis https://g. Und vergessen Sie auch nicht andere Protokolle wie file://(Seite wird von der Festplatte geladen) - was Ihnen definitiv viel Kopfschmerzen bereiten wird.
Andrey Tserkus
62
Dies sind protokollbezogene URLs. Sie zeigen auf eine Adresse und behalten das aktuelle Protokoll bei.
Diese Notation wird häufig verwendet, um das Problem "gemischter Inhalt" zu vermeiden (eine IE-Warnmeldung, die sich über httpund httpsRessourcen auf derselben HTTPS-Seite beschwert ).
Eine relative Referenz, die mit zwei Schrägstrichen beginnt, wird als Netzwerkpfadreferenz bezeichnet. solche Referenzen werden selten verwendet. Eine relative Referenz, die mit einem einzelnen Schrägstrich beginnt, wird als absolute Pfadreferenz bezeichnet. Eine relative Referenz, die nicht mit einem Schrägstrich beginnt, wird als relative Pfadreferenz bezeichnet.
Gut zu wissen, aber wie kompatibel ist dies mit gängigen Browsern. Eine schnelle Suche hat mir gesagt, dass es mit IE6 nicht funktioniert ... ist das eine HTML5-Funktion?
Shane N
4
@Shane das sollte in allen Browsern funktionieren. Haben Sie einen Link, der behauptet, dass er in IE6 nicht funktioniert?
Pekka
4
Ich bin mir ziemlich sicher, dass es sich um eine IE1-Funktion handelt!
Jon Hanna
Plus für die Erwähnung des Protokollverwandten
Tawfik Khalifeh
30
Sie sind protokollunabhängige URLs. Wenn die Webseite unter https bereitgestellt wird, verwendet die Anforderung https, wenn http, dann http.
Beachten Sie, dass es nicht nur http- oder https- unabhängig ist, sondern auch Datei , FTP usw.
Wenn Sie die .htm- Datei direkt in Ihrem Browser auf localhost öffnen , wird der Browser // als Dateiprotokoll aufgelöst und Ihre Seite funktioniert nicht. Es kann Probleme bei gepackten Websites als "native" App verursachen, die Tools wie Electron, PhoneGap usw. verwenden.
../g
- es wird das aktuelle Protokoll verwenden und zu führenhttp://a/b/c/g
.xml:base
um es explizit auf ein beliebiges Element gesetzt . Standardmäßig ist der Basis-URI in HTML derselbe URI der Seite (aber in einer CSS-Datei ist der Basis-URI relativ zum CSS- URI , nicht zum enthaltenden HTML , aber der ältere IE hat ihn relativ zum HTML erstellt). In anderen Protokollen und Sprachen kann dies unterschiedlich sein (in XSLT hängt es beispielsweise vom aktuellen Element ab). Siehe auch<html:base>
.http
! Dies hängt vom Protokoll des Seitenkontexts ab. Wenn der Kontext unter geladen wurdehttp://a/b/c/d;p?q
, wird//g
tatsächlich in aufgelösthttp://g
. Wenn die Seite jedoch so geladen wurde,http://a/b/c/d;p?q
ist das Ergebnishttps://g
. Und vergessen Sie auch nicht andere Protokolle wiefile://
(Seite wird von der Festplatte geladen) - was Ihnen definitiv viel Kopfschmerzen bereiten wird.Dies sind protokollbezogene URLs. Sie zeigen auf eine Adresse und behalten das aktuelle Protokoll bei.
Diese Notation wird häufig verwendet, um das Problem "gemischter Inhalt" zu vermeiden (eine IE-Warnmeldung, die sich über
http
undhttps
Ressourcen auf derselben HTTPS-Seite beschwert ).Update: Offizielle Dokumentation in RFC 3986:
quelle
Sie sind protokollunabhängige URLs. Wenn die Webseite unter https bereitgestellt wird, verwendet die Anforderung https, wenn http, dann http.
Paul Irish scheint sie populär gemacht zu haben, indem er sie in seinen Boilerplate-Code aufgenommen hat.
quelle
Beachten Sie, dass es nicht nur http- oder https- unabhängig ist, sondern auch Datei , FTP usw.
Wenn Sie die .htm- Datei direkt in Ihrem Browser auf localhost öffnen , wird der Browser // als Dateiprotokoll aufgelöst und Ihre Seite funktioniert nicht. Es kann Probleme bei gepackten Websites als "native" App verursachen, die Tools wie Electron, PhoneGap usw. verwenden.
Beispiel:
zu
quelle