URL ohne "http | https"

88

Ich habe gerade von einem Kollegen erfahren, dass das Weglassen des Teils "http | https" einer URL in einem Link dazu führt, dass diese URL das Schema verwendet, auf dem die Seite verwendet wird.

Wenn zum Beispiel auf meine Seite unter http://www.example.com zugegriffen wird und ich einen Link habe (beachten Sie das '//' vorne):

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

Dieser Link führt zu http://www.google.com .

Wenn ich jedoch mit demselben Link auf die Seite unter https://www.example.com zugreife , wird sie zu https://www.google.com aufgerufen

Ich wollte online nach weiteren Informationen suchen, habe aber Probleme, einen guten Suchbegriff zu finden. Wenn ich nach "URLs ohne HTTP" suche, handelt es sich bei den zurückgegebenen Seiten um URLs mit dem folgenden Formular: "www.example.com", nach dem ich nicht suche.

Würden Sie das eine schemenlose URL nennen? Eine protokolllose URL?

Funktioniert das in allen Browsern? Ich habe es in FF und IE 8 getestet und es hat in beiden funktioniert. Ist dies Teil eines Standards oder sollte ich mehr Browser testen?

topher-j
quelle
1
Als Referenz (da Sie gefragt haben, welche Begriffe gesucht werden sollen) lautete die Google-Suche, die mich zur ursprünglichen StackOverflow-Frage brachte: "Absolute URL ohne Protokoll"
David,
Sie geben nicht an, ob es sich um ein http oder https handelt, sodass der Browser für Sie entscheidet, indem er die letzte Seite aufnimmt, vorausgesetzt, der Link stammt von derselben Seite.
Raym0nd
Danke David, der Link zum Duplikat hat alle meine Fragen beantwortet
topher-j
1
@ David: Um genau zu sein, würden Sie es nicht als absolute URL bezeichnen, wenn es kein Protokoll gibt. Es ist eher eine relative URL.
Gumbo

Antworten:

15

Es wird als Netzwerkpfadreferenz bezeichnet (der fehlende Teil heißt schemeoder protocol) und ist in RFC3986 Abschnitt 4.2 definiert

4.2 Relative Referenz

Eine relative Referenz nutzt die hierarchische Syntax (Abschnitt 1.2.3), um eine URI-Referenz relativ zum Namensraum einer anderen hierarchischen URI auszudrücken.

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

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

Der URI, auf den sich eine relative Referenz bezieht, die auch als Ziel-URI bezeichnet wird, wird durch Anwenden des Referenzauflösungsalgorithmus von Abschnitt 5 erhalten.

Eine relative Referenz, die mit zwei Schrägstrichen beginnt, wird als Netzwerkpfadreferenz bezeichnet (Hervorhebung von mir). 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.

Ein Pfadsegment, das ein Doppelpunktzeichen enthält (z. B. "this: that"), kann nicht als erstes Segment einer Relativpfadreferenz verwendet werden, da es für einen Schemanamen gehalten würde. Vor einem solchen Segment muss ein Punktsegment (z. B. "./this:that") stehen, um eine relative Pfadreferenz zu erstellen.

Matas Vaitkevicius
quelle
// kann nicht im Basis-Tag in HTML verwendet werden. Ich habe <base href = "// abc.com/" und eine relative Bild-URL <img src = "/ img / logo.jpg> festgelegt. Beim Öffnen im Browser wird der Bildlink jedoch zur Datei: /// abc. com / img / logo.jpg. Irgendeine Problemumgehung?
Scott Chu