Yang mana di antara ini adalah yang paling efektif vs memeriksa apakah agen pengguna mengakses melalui domain yang benar.
Kami ingin menampilkan peringatan gaya 'top bar' berbasis js kecil jika mereka mengakses domain menggunakan semacam proxy web (karena cenderung merusak js).
Kami berpikir untuk menggunakan yang berikut ini:
var r = /.*domain\.com$/;
if (r.test(location.hostname)) {
// showMessage ...
}
Itu akan menangani semua subdomain yang pernah kami gunakan.
Yang mana yang harus kita gunakan host atau nama host?
Di Firefox 5 dan Chrome 12:
console.log(location.host);
console.log(location.hostname);
..menunjukkan hal yang sama untuk keduanya.
Apakah itu karena port sebenarnya tidak ada di bilah alamat?
W3Schools mengatakan host berisi port.
Haruskah location.host/hostname divalidasi atau bisakah kita cukup yakin di IE6 + dan semua yang lain itu akan ada?
Jawaban:
Sebagai memo kecil: anatomi tautan interaktif
-
Singkatnya (dengan asumsi lokasi
http://example.org:8888/foo/bar#bang
):hostname
Memberi andaexample.org
host
Memberi andaexample.org:8888
sumber
:
,, dan port. Saya bertanya-tanya berapa banyak diskusi masih tersedia dari ketikalocation.host
sedang dirumuskan ... Saya menduga itu dinamai hari ini karena tidak ada yang hadir telah membaca atau berpikir untuk menyebutkan RFC itu.host hanya menyertakan nomor port jika ada yang ditentukan. Jika tidak ada nomor port khusus di URL, maka itu mengembalikan sama dengan nama host. Anda memilih apakah Anda ingin mencocokkan nomor port atau tidak. Lihat https://developer.mozilla.org/en/window.location untuk info lebih lanjut.
Saya akan menganggap Anda ingin nama host hanya mendapatkan nama situs.
sumber
Jika Anda bersikeras untuk menggunakan
window.location.origin
Anda dapat menempatkan ini di atas kode Anda sebelum membacaorigin
Larutan
PS: Sebagai catatan, itu sebenarnya pertanyaan awal. Sudah diedit :)
sumber
window.location.origin
dalam pertanyaan mereka. Pertanyaan mereka sebenarnya khusus mengenai hal-hal yang tidakwindow.location.origin
.Pertanyaan utama Anda telah dijawab di atas. Saya hanya ingin menunjukkan bahwa regex yang Anda gunakan memiliki bug. Ini juga akan berhasil
foo-domain.com
yang bukan merupakan subdomain daridomain.com
Apa yang benar-benar Anda inginkan adalah ini:
sumber
MDN: https://developer.mozilla.org/en/DOM/window.location
Tampaknya Anda akan mendapatkan hasil yang sama untuk keduanya, tetapi
hostname
berisi nama host yang jelas tanpa tanda kurung atau nomor port.sumber
Hanya untuk menambahkan catatan bahwa browser Google Chrome memiliki atribut asal untuk lokasi. yang memberi Anda seluruh domain dari protokol ke nomor port seperti yang ditunjukkan pada gambar di bawah.
sumber