Absolute URLs, die das Protokoll (Schema) weglassen, um das der aktuellen Seite beizubehalten

83

Ich habe das //somepage.com/resourceURL-Format gesehen. Beispielsweise:

<img src="//remotesite.com/image1.jpg" />

Der Punkt dabei ist, dass, wenn die aktuelle Seite (die Seite, die das imgTag definiert ) verwendet wird http, die Anforderung an die Remote-Site über http erfolgt. Wenn es https ist, ist es https. Dadurch werden Browser-Warnungen vor nicht vollständig verschlüsselten Seiten vermieden.

Meine Frage ist - ist dieses URL-Format für alle Browser sicher? Und ist es ein Standard?

Bozho
quelle
3
Verwandte: Kann ich alle meine http: // Links auf nur // ändern? beantwortet Ihre erste und Schema relative URLs beantwortet Ihre zweite Frage.
Gumbo
Obwohl Sie den Begriff in Ihrer Frage nicht verwendet haben, habe ich das protokollbezogene Tag hinzugefügt (damit diese Frage leichter gefunden werden kann).
Unor

Antworten:

60

Ist dieses URL-Format für alle Browser sicher?

Ich kann nichts sicheres sagen, aber Sie sollten es in verschiedenen Browsern testen können.

Und ist es ein Standard?

Technisch wird es gemäß RFC 3986 als "Netzwerkpfadreferenz" bezeichnet . Hier ist das Schema dafür:

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

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

Es gibt ein Problem jedoch verwendet , wenn auf einem <link>oder @import, IE7 und IE8 die Datei herunterladen.

Hier ist ein Beitrag von Paul Irish zu diesem Thema:

Sarfraz
quelle
1
Beachten Sie, dass Paul Irish seinen Beitrag aktualisiert hat, um anzuzeigen, dass Ressourcen jetzt immer über https bereitgestellt werden sollten, wenn dies möglich ist. Siehe den Beitrag von @Sarfraz oben verlinkt.
Evan Donovan
Der Google Analytics-Snippet-Code verwendet dieses Schema. Ich wette, es ist browserübergreifend, während dieses Tool von vielen, vielen Websites verwendet wird. Andernfalls wird nur die https-Version
bereitgestellt
21

Ja, ich glaube es ist. Paul Irish hat den Begriff Protocol Relative URL geprägt .

Ich möchte auch darauf hinweisen, dass es Teil des HTML5Boilerplate- Projekts ist, das die Cross-Browser-Kompatibilität evangelisiert.

Hinweis: In IE6 mit Google Analytics gibt es einen Randfall, der in Pauls Artikel erwähnt wird. Es ist also nicht perfekt.

xzyfer
quelle
Dies ist nicht mehr wahr, siehe stackoverflow.com/a/37609402/2237601 oder hier verwenden sie jetzt https://. Lesen Sie auch hier, warum das Aufheben des Protokollschemas möglicherweise keine gute Idee ist.
bg17aw