Saya memiliki stylesheet yang memuat gambar dari domain eksternal dan saya membutuhkannya untuk memuat dari https: // dari halaman pesanan aman dan http: // dari halaman lain, berdasarkan URL saat ini. Saya menemukan bahwa memulai URL dengan garis miring ganda mewarisi protokol saat ini. Apakah semua browser mendukung teknik ini?
html ex:
<img src="//cdn.domain.com/logo.png" />
css ex:
.class { background: url(//cdn.domain.com/logo.png); }
http
url
https
url-protocol
Rob Volk
sumber
sumber
Jawaban:
Jika browser mendukung RFC 1808 Bagian 4 , RFC 2396 Bagian 5.2 , atau RFC 3986 Bagian 5.2 , maka memang akan menggunakan skema URL halaman untuk referensi yang dimulai dengan "//".
sumber
ftp://info.cern.ch/pub/www/doc/http-spec.txt
dimulai pada tahun 1991, jika ada yang memiliki salinan arsip.Saat digunakan pada
link
atau@import
, IE7 / IE8 akan mengunduh file dua kali per http://paulirish.com/2010/the-protocol-relative-url/Pembaruan dari 2014:
sumber
Satu kelemahan terjadi jika URL Anda dilihat di luar konteks halaman web. Misalnya, pesan email yang berada di klien email (katakanlah, Outlook) secara efektif tidak memiliki URL, dan ketika Anda melihat pesan yang berisi URL relatif protokol, sama sekali tidak ada konteks protokol yang jelas (pesan itu sendiri independen dari protokol yang digunakan untuk mengambilnya, apakah itu POP3, IMAP, Exchange, uucp atau apa pun) sehingga URL tidak memiliki protokol yang relatif. Saya belum menyelidiki kompatibilitas dengan klien email untuk melihat apa yang mereka lakukan ketika disajikan dengan pengendali protokol yang hilang - Saya menduga sebagian besar akan menebak di http. Apple Mail menolak untuk membiarkan Anda memasukkan URL tanpa protokol. Ini analog dengan cara URL relatif tidak berfungsi dalam email karena konteks yang sama-sama hilang.
Masalah serupa dapat terjadi dalam konteks non-HTTP lain seperti di tweet, pesan SMS, dokumen Word, dll.
Penjelasan yang lebih umum adalah bahwa URL protokol anonim tidak dapat bekerja secara terpisah; ada harus menjadi konteks yang relevan. Dengan demikian, di laman web biasa menarik perpustakaan skrip dengan cara itu, tetapi tautan eksternal apa pun harus selalu menentukan protokol. Saya memang mencoba satu tes sederhana:
//stackoverflow.com
petafile:///stackoverflow.com
di semua browser tempat saya mencobanya, sehingga mereka benar - benar tidak bekerja sendiri.sumber
https
atauhttp
mungkin sebenarnya tidak tersedia, Anda tidak dapat selalu menganggap itu.file://
. Ini adalah usecase kecil, tetapi ketika muncul penting.//
adalah apa .<base href="https://www.google.com">
, Anda dapat melihat konten di luar sisi web. salah satu<img src="//www.google.com/images/srpr/logo11w.png">
atau<img src="images/srpr/logo11w.png">
Alasannya bisa untuk menyediakan halaman web portabel. Jika halaman luar tidak diangkut dienkripsi (http), mengapa skrip yang ditautkan dienkripsi? Ini tampaknya merupakan kehilangan kinerja yang tidak perlu. Dalam hal, halaman luar diangkut dengan aman dienkripsi (https), maka konten yang ditautkan juga harus dienkripsi. Jika halaman dienkripsi, konten tertaut tidak, IE tampaknya mengeluarkan peringatan Konten Campuran . Alasannya adalah bahwa penyerang dapat memanipulasi skrip di jalan. Lihat http://ie.microsoft.com/testdrive/Browser/MixedContent/Default.html?o=1 untuk diskusi lebih lama.
Kampanye HTTPS Everywhere dari EFF menyarankan untuk menggunakan https bila memungkinkan. Kami memiliki kapasitas server hari ini untuk melayani halaman web yang selalu dienkripsi.
sumber
Hanya untuk kelengkapan. Ini disebutkan di utas lain:
Silakan periksa utas lengkapnya.
sumber
Tampaknya menjadi teknik yang cukup umum sekarang. Tidak ada downside, itu hanya membantu untuk menyatukan protokol untuk semua aset di halaman sehingga harus digunakan sedapat mungkin.
sumber