Yang satu ini adalah yang paling efektif dibandingkan dengan memeriksa apakah user agent adalah mengakses melalui domain yang benar.
Kami ingin menunjukkan kecil berbasis js 'top bar' gaya peringatan jika mereka mengakses domain menggunakan semacam web proxy (karena cenderung untuk istirahat js).
Kami berpikir tentang menggunakan berikut:
var r = /.*domain\.com$/;
if (r.test(location.hostname)) {
// showMessage ...
}
Yang akan mengurus setiap subdomain yang pernah kita gunakan.
Mana yang harus kita gunakan host atau host?
Di Firefox 5 dan Chrome 12:
console.log(location.host);
console.log(location.hostname);
.. menunjukkan hal yang sama untuk keduanya.
Itu karena pelabuhan isn't benar-benar di address bar?
W3Schools kata tuan rumah berisi port.
Harus profesional.tuan rumah/host dapat divalidasi atau kita bisa cukup yakin di IE6+ dan semua yang lain itu akan ada?
Sebagai sebuah memo kecil ini: interactive link anatomi
--
Dalam jangka pendek (dengan asumsi lokasi http://example.org:8888/foo/bar#bang
):
hostname
memberi anda contoh.org
host
memberi anda contoh.org:8888
tuan rumah hanya mencakup nomor port jika ada satu yang ditentukan. Jika tidak ada nomor port khusus di URL, kemudian kembali sama seperti hostname. Anda memilih apakah anda peduli untuk mencocokkan nomor port atau tidak. Lihat https://developer.mozilla.org/en/window.location untuk info lebih lanjut.
Saya akan berasumsi anda ingin hostname untuk hanya mendapatkan nama situs.
Jika anda bersikeras untuk menggunakan jendela.lokasi hotel ini.asal
Anda dapat menempatkan ini di atas kode anda sebelum membaca asal
if (!window.location.origin) {
window.location.origin = window.location.protocol + "//" + window.location.hostname + (window.location.port ? ':' + window.location.port: '');
}
PS: Untuk catatan, itu benar-benar pertanyaan yang asli. Itu sudah diedit :)
Utama anda pertanyaan sudah dijawab di atas. Saya hanya ingin menunjukkan bahwa regex anda're menggunakan memiliki bug. Hal ini juga akan berhasil foo-domain.com
yang tidak subdomain domain.com
Apa yang anda benar-benar inginkan adalah ini:
/(^|\.)domain\.com$/
MDN: https://developer.mozilla.org/en/DOM/window.location
Tampaknya bahwa anda akan mendapatkan hasil yang sama untuk kedua, tapi hostname
berisi jelas nama host tanpa tanda kurung atau nomor port.