Ich habe ein Stylesheet, das Bilder von einer externen Domain lädt, und ich brauche es, um von https: // von sicheren Bestellseiten und http: // von anderen Seiten basierend auf der aktuellen URL zu laden. Ich habe festgestellt, dass das Starten der URL mit einem doppelten Schrägstrich das aktuelle Protokoll erbt. Unterstützen alle Browser diese Technik?
html ex:
<img src="//cdn.domain.com/logo.png" />
CSS-Beispiel:
.class { background: url(//cdn.domain.com/logo.png); }
http
url
https
url-protocol
Rob Volk
quelle
quelle
Antworten:
Wenn der Browser RFC 1808 Abschnitt 4 , RFC 2396 Abschnitt 5.2 oder RFC 3986 Abschnitt 5.2 unterstützt , verwendet er tatsächlich das Schema der Seiten-URL für Verweise, die mit "//" beginnen.
quelle
ftp://info.cern.ch/pub/www/doc/http-spec.txt
1991 begann, sollte jemand eine Archivkopie haben.Bei Verwendung auf einem
link
oder@import
lädt IE7 / IE8 die Datei zweimal unter http://paulirish.com/2010/the-protocol-relative-url/ herunter.Update von 2014:
quelle
Ein Nachteil tritt auf, wenn Ihre URLs außerhalb des Kontexts einer Webseite angezeigt werden. Beispielsweise hat eine E-Mail-Nachricht in einem E-Mail-Client (z. B. Outlook) effektiv keine URL, und wenn Sie eine Nachricht mit einer protokollbezogenen URL anzeigen, gibt es überhaupt keinen offensichtlichen Protokollkontext (die Nachricht selbst ist unabhängig des Protokolls, das zum Abrufen verwendet wird, unabhängig davon, ob es sich um POP3, IMAP, Exchange, uucp oder was auch immer handelt), sodass die URL kein Protokoll enthält, zu dem sie relativ sein kann. Ich habe die Kompatibilität mit E-Mail-Clients nicht untersucht, um zu sehen, was sie tun, wenn ein fehlender Protokollhandler angezeigt wird. Ich vermute, dass die meisten unter http raten werden. Apple Mail verweigert die Eingabe einer URL ohne Protokoll. Es ist analog zu der Art und Weise, wie relative URLs in E-Mails aufgrund eines ähnlich fehlenden Kontexts nicht funktionieren.
Ähnliche Probleme können in anderen Nicht-HTTP-Kontexten auftreten, z. B. in Tweets, SMS-Nachrichten, Word-Dokumenten usw.
Die allgemeinere Erklärung ist, dass anonyme Protokoll-URLs nicht isoliert arbeiten können. Es muss einen relevanten Kontext geben. Auf einer typischen Webseite ist es daher in Ordnung, eine Skriptbibliothek auf diese Weise abzurufen. Externe Links sollten jedoch immer ein Protokoll angeben. Ich habe einen einfachen Test ausprobiert:
//stackoverflow.com
Kartenfile:///stackoverflow.com
in allen Browsern, in denen ich es ausprobiert habe, damit sie wirklich nicht von alleine funktionieren.quelle
https
oderhttp
möglicherweise nicht verfügbar ist. Sie können nicht immer davon ausgehen, dass dies der Fall ist.file://
. Es ist ein kleiner Anwendungsfall, aber wenn es auftaucht, ist es wichtig.//
ist.<base href="https://www.google.com">
, können Sie den Inhalt außerhalb der Webseite anzeigen. entweder<img src="//www.google.com/images/srpr/logo11w.png">
oder<img src="images/srpr/logo11w.png">
Der Grund könnte sein, tragbare Webseiten bereitzustellen. Wenn die äußere Seite nicht verschlüsselt transportiert wird (http), warum sollten die verknüpften Skripte verschlüsselt werden? Dies scheint ein unnötiger Leistungsverlust zu sein. Falls die äußere Seite sicher verschlüsselt (https) transportiert wird, sollte auch der verknüpfte Inhalt verschlüsselt werden. Wenn die Seite verschlüsselt ist und der verknüpfte Inhalt nicht, scheint der IE eine Warnung zu gemischtem Inhalt auszugeben. Der Grund ist, dass ein Angreifer die Skripte unterwegs manipulieren kann. Siehe http://ie.microsoft.com/testdrive/Browser/MixedContent/Default.html?o=1Eine längere Diskussion finden .
Die HTTPS Everywhere- Kampagne des EFF schlägt vor, wann immer möglich https zu verwenden. Wir haben heutzutage die Serverkapazität, um Webseiten immer verschlüsselt bereitzustellen.
quelle
Nur der Vollständigkeit halber. Dies wurde in einem anderen Thread erwähnt:
Bitte überprüfen Sie den vollständigen Thread.
quelle
Es scheint jetzt eine ziemlich verbreitete Technik zu sein. Es gibt keinen Nachteil, es hilft nur, das Protokoll für alle Assets auf der Seite zu vereinheitlichen, und sollte daher nach Möglichkeit verwendet werden.
quelle