Dukungan browser untuk URL yang diawali dengan garis miring ganda

107

Saya baru-baru ini melihat beberapa tautan yang digunakan tanpa protokol. Tampaknya tidak terlalu sulit untuk dipahami - menurut saya itu ide yang bagus dan cukup intuitif.

Bagi Anda yang tidak menyadarinya, menggunakan URL like //example.com/script.jsakan mengarah ke salah satu http://example.com/script.jsatau https://example.com/script.jsbergantung pada apakah URL tersebut berasal dari URL http atau https atau tidak . Menyertakan skrip http atau gambar dari halaman https dapat menjadi masalah keamanan, misalnya, jadi ini menyelesaikannya tanpa perlu deteksi protokol dalam kode Anda.

Pertanyaan saya adalah, browser / OS seperti apa yang mendukungnya? Apakah aman digunakan dalam produksi? Ini pasti akan membuat segalanya menjadi lebih mudah.

Contoh dan pengujian sederhana: http://codetester.org/916c6916

EDIT: Hanya tindak lanjut bahwa saya telah menggunakan ini untuk server iklan perusahaan saya dalam produksi untuk banyak hal tanpa masalah selama beberapa tahun sekarang.

dtbarne.dll
sumber
9
Dijawab di sini: stackoverflow.com/questions/4659345/… --- Singkatnya, ini ada dalam spesifikasi RFC sehingga harus didukung oleh semua browser utama.
Keith
1
@Keith Terima kasih, itu bagus dan semuanya, tetapi melihat melalui spesifikasi RFC, saya sebenarnya tidak melihat apa pun tentang hal awal garis miring ganda ini. Berharap untuk menemukan beberapa pengujian browser yang pasti sudah dilakukan. :)
dtbarne

Jawaban:

88

Perilaku ini adalah bagian dari RFC 1808 (Bagian 4) yang berusia sekitar 16 tahun, jadi setiap browser utama harus (dan memang) mendukung ini.

Sayangnya, ada bug dengan IE7 dan -8 yang akan membuat mereka mengunduh sumber daya dua kali jika URL relatif-protokol digunakan pada linkatau @import- yang seharusnya tidak menjadi masalah besar, tetapi jelek dan harus diingat.

oezi
sumber
Ini adalah postingan lama, tetapi saya juga ingin mengatakan bahwa ini sama sekali bukan praktik yang baik. Baru-baru ini saya mengalami masalah pada salah satu dasbor admin pelanggan kami. URL //code.jquery.com/jquery-2.1.3.min.jstidak ditemukan dan perpustakaan tidak dimuat. Saya kemudian mencoba memuat http://code.jquery.com/jquery-2.1.3.min.jsdan melihat halaman kesalahan. Saya mencurigai konfigurasi keamanan proxy atau VPN atau firewall yang mereka atur secara internal. Setelah memperbarui URL untuk menggunakan httpsprotokol, semuanya berfungsi dengan baik.
TwystO
3

Jika Anda mengembangkan pada mesin lokal, ada kemungkinan itu akan gagal src="file://host.com/filename".

Dalam situasi ini Anda perlu menentukan skema secara eksplisit: http://host.com/filenameatau https://host.com/filename.

Matas Vaitkevicius
sumber