URL tanpa “http | https”

89

Saya baru saja mengetahui dari seorang kolega bahwa menghilangkan bagian "http | https" dari sebuah URL dalam sebuah tautan akan membuat URL tersebut menggunakan skema apa pun yang digunakan laman itu.

Jadi misalnya, jika halaman saya diakses di http://www.example.com dan saya memiliki tautan (perhatikan '//' di depan):

<a href="https://www.google.com">Google</a>

Tautan itu akan menuju ke http://www.google.com .

Tetapi jika saya mengakses halaman di https://www.example.com dengan link yang sama, itu akan masuk ke https://www.google.com

Saya ingin mencari informasi lebih lanjut secara online tentang ini, tetapi saya kesulitan memikirkan frasa penelusuran yang bagus. Jika saya mencari "URL tanpa HTTP", halaman yang dikembalikan adalah tentang url dengan bentuk ini: "www.example.com", bukan itu yang saya cari.

Apakah Anda akan menyebutnya URL tanpa skema? URL tanpa protokol?

Apakah ini berfungsi di semua browser? Saya mengujinya di FF dan IE 8 dan berhasil di keduanya. Apakah ini bagian dari standar, atau haruskah saya menguji lebih banyak browser?

topher-j
sumber
1
Sebagai referensi (karena Anda menanyakan istilah apa yang harus dicari), penelusuran Google yang membawa saya ke pertanyaan StackOverflow asli adalah: "url absolut tanpa protokol"
David
Anda tidak menentukan apakah itu http atau https sehingga browser memutuskan untuk Anda dengan mengambil halaman terakhir dengan asumsi bahwa link tersebut berasal dari halaman yang sama.
raym0nd
Terima kasih David, tautan ke duplikat menjawab semua pertanyaan saya
topher-j
1
@David: Tepatnya, Anda tidak akan menyebutnya sebagai URL absolut jika tidak memiliki protokol; ini lebih merupakan URL relatif.
Gumbo

Jawaban:

15

Ini disebut referensi jalur jaringan (bagian yang hilang disebut schemeatau protocol) didefinisikan di RFC3986 Bagian 4.2

4.2 Referensi Relatif

Referensi relatif memanfaatkan sintaks hierarki (Bagian 1.2.3) untuk mengekspresikan referensi URI yang terkait dengan ruang nama URI hierarki lainnya.

  relative-ref  = relative-part [ "?" query ] [ "#" fragment ]

  relative-part = "//" authority path-abempty
                / path-absolute
                / path-noscheme
                / path-empty

URI yang dirujuk oleh referensi relatif, juga dikenal sebagai URI target, diperoleh dengan menerapkan algoritme resolusi referensi pada Bagian 5.

Referensi relatif yang dimulai dengan dua karakter garis miring disebut referensi jalur jaringan (penekanan saya); referensi semacam itu jarang digunakan. Referensi relatif yang dimulai dengan karakter garis miring tunggal disebut referensi jalur absolut. Referensi relatif yang tidak dimulai dengan karakter garis miring disebut referensi jalur-relatif.

Segmen jalur yang berisi karakter titik dua (misalnya, "this: that") tidak dapat digunakan sebagai segmen pertama dari referensi jalur relatif, karena akan keliru dianggap sebagai nama skema. Segmen tersebut harus diawali dengan segmen titik (misalnya, "./this:that") untuk membuat referensi jalur relatif.

Matas Vaitkevicius
sumber
// tidak dapat digunakan dalam tag dasar di html. Saya menetapkan <base href = "// abc.com/" dan url gambar relatif <img src = "/ img / logo.jpg>. Namun, dibuka di browser, link gambar akan menjadi file: /// abc. com / img / logo.jpg. Ada solusi lain?
Scott Chu