Dave Ward berkata,
Ini bukan pembacaan yang ringan, tetapi bagian 4.2 dari RFC 3986 menyediakan URL yang sepenuhnya memenuhi syarat yang menghilangkan protokol (HTTP atau HTTPS) sama sekali. Ketika protokol URL dihilangkan, browser menggunakan protokol dokumen yang mendasarinya sebagai gantinya.
Sederhananya, URL "tanpa protokol" ini memungkinkan referensi seperti ini berfungsi di setiap browser tempat Anda akan mencobanya:
//ajax.googleapis.com/ajax/libs/jquery/1.4.4/jquery.min.js
Awalnya terlihat aneh, tetapi URL "kurang protokol" ini adalah cara terbaik untuk mereferensikan konten pihak ketiga yang tersedia melalui HTTP dan HTTPS.
Ini tentu akan menyelesaikan banyak kesalahan konten campuran yang kami lihat di halaman HTTP - dengan asumsi bahwa aset kami tersedia melalui HTTP dan HTTPS.
Apakah ini sepenuhnya kompatibel dengan browser? Apakah ada peringatan lain?
sumber
Jawaban:
Saya mengujinya dengan seksama sebelum menerbitkan. Dari semua browser yang tersedia untuk diuji pada Browser , saya hanya bisa menemukan satu yang tidak menangani URL relatif protokol dengan benar: browser * nix yang tidak jelas yang disebut Dillo .
Ada dua kelemahan yang saya terima tentang:
sumber
link
elemen. Misalnya, ketika menentukan//fonts.googleapis.com/css?family=Rokkitt:400,700
, IE6 mencoba memuathttp://mysite.com/fonts.googleapis.com/css/<...>
. Tidak begitu baik!Pertanyaan apakah seseorang dapat mengubah semua tautannya menjadi protokol-relatif dapat diperdebatkan, mempertimbangkan pertanyaan apakah seseorang harus melakukannya. Menurut Paul Irish :
sumber
Jika Anda menggunakan URL tanpa protokol untuk memuat stylesheet, IE 7 & 8 akan mengunduhnya dua kali: http://www.stevesouders.com/blog/2010/02/10/5a-missing-schema-double-download/
Jadi, ini harus dihindari untuk CSS jika Anda suka kinerja yang baik.
sumber
Ya, referensi jalur jaringan sudah ditentukan dalam RFC 1808 dan harus bekerja dengan semua browser.
sumber
Hanya dengan melempar ini dalam campuran, jika Anda mengembangkan pada server lokal, itu mungkin tidak berfungsi. Anda harus menentukan skema, jika tidak browser mungkin menganggap bahwa
src="//cdn.example.com/js_file.js"
adalahsrc="file://cdn.example.com/js_file.js"
, yang akan memecah karena Anda tidak hosting sumber daya ini secara lokal.Microsoft Internet Explorer tampaknya sangat sensitif terhadap ini, lihat pertanyaan ini: Tidak dapat memuat jQuery di Internet Explorer di localhost (WAMP)
Anda mungkin akan selalu berusaha menemukan solusi yang berfungsi di semua lingkungan Anda dengan jumlah modifikasi paling sedikit yang diperlukan.
Solusi yang digunakan oleh HTML5Boilerplate adalah memiliki cadangan ketika sumber daya tidak dimuat dengan benar, tetapi itu hanya bekerja jika Anda memasukkan tanda centang:
Saya mengirim jawaban ini di sini juga.
PEMBARUAN: HTML5Boilerplate sekarang digunakan
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.10.2/jquery.min.js">
setelah memutuskan untuk mencabut URL relatif protokol, lihat di sini .sumber
Saya belum memiliki masalah ini saat menggunakan: //domain.com - tetapi Anda harus menambahkan titik dua di awal. Yoast menulis yang baik tentang ini beberapa waktu lalu. Tapi itu hilang di tumpukan posting blognya.
sumber
Jika Anda ingin memastikan semua permintaan ditingkatkan ke protokol yang aman, maka ada opsi sederhana untuk menggunakan tajuk peningkatan Kebijakan Keamanan Konten.
https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Content-Security-Policy/upgrade-insecure-requests
sumber