Przeglądarka obsługuje adresy URL zaczynające się od podwójnego ukośnika

107

Niedawno widziałem kilka linków używanych bez protokołu. Nie wydawało się to trudne do zrozumienia - myślę, że to świetny pomysł i całkiem intuicyjny.

Dla tych z Was zdaje sobie sprawy, jak przy użyciu adresu URL //example.com/script.jspunkt będzie albo http://example.com/script.jsczy https://example.com/script.jsw zależności od tego, czy pochodzi URL-a z http lub https URL. Dołączanie skryptów http lub obrazów ze strony https może na przykład stanowić zagrożenie dla bezpieczeństwa, więc rozwiązuje to problem bez konieczności wykrywania protokołu w kodzie.

Moje pytanie brzmi: jaki rodzaj obsługi przeglądarki / systemu operacyjnego jest dla niego dostępny? Czy użycie w produkcji jest bezpieczne? To z pewnością ułatwiłoby sprawę.

Prosty przykład i test: http://codetester.org/916c6916

EDYCJA: Po prostu kontynuacja, że ​​używam tego serwera reklam mojej firmy w środowisku produkcyjnym do wielu rzeczy bez problemu od kilku lat.

dtbarne
źródło
9
Odpowiedział tutaj: stackoverflow.com/questions/4659345/ ... --- Krótko mówiąc, jest w specyfikacji RFC, więc powinien być obsługiwany przez wszystkie główne przeglądarki.
Keith,
1
@Keith Dzięki, to dobrze i wszystko, ale patrząc przez specyfikacje RFC, właściwie nie widzę nic na temat tego początkowego podwójnego slasha. Miałem nadzieję, że jakieś ostateczne testy przeglądarki już zostały wykonane. :)
dtbarne

Odpowiedzi:

88

To zachowanie było częścią RFC 1808 (sekcja 4), która ma około 16 lat, więc każda większa przeglądarka powinna (i obsługuje) to.

Niestety, w IE7 i -8 jest błąd, który powoduje, że pobierają zasoby dwukrotnie, jeśli adres URL zależny od protokołu jest używany w linklub @import- co nie powinno stanowić dużego problemu, ale jest brzydkie i należy o tym pamiętać.

oezi
źródło
To jest stary post, ale chciałem też powiedzieć, że to wcale nie jest dobra praktyka. Niedawno miałem problemy z pulpitem administracyjnym jednego z naszych klientów. //code.jquery.com/jquery-2.1.3.min.jsNie znaleziono adresu URL, a biblioteka nie została załadowana. Następnie próbuję załadować http://code.jquery.com/jquery-2.1.3.min.jsi wyświetlić stronę błędu. Podejrzewam, że konfiguracja zabezpieczeń proxy, VPN lub zapory sieciowej została ustawiona wewnętrznie. Po zaktualizowaniu adresu URL w celu korzystania z httpsprotokołu wszystko działa dobrze.
TwystO
3

Jeśli programujesz na komputerze lokalnym, istnieje możliwość, że to się nie powiedzie src="file://host.com/filename".

W tej sytuacji musisz wyraźnie określić schemat: http://host.com/filenamelub https://host.com/filename.

Matas Vaitkevicius
źródło