¿Cuál de estos es el más efectivo versus verificar si el agente de usuario está accediendo a través del dominio correcto?
Nos gustaría mostrar una pequeña advertencia de estilo de 'barra superior' basada en js si están accediendo al dominio utilizando algún tipo de proxy web (ya que tiende a romper el js).
Estábamos pensando en usar lo siguiente:
var r = /.*domain\.com$/;
if (r.test(location.hostname)) {
// showMessage ...
}
Eso se encargaría de cualquier subdominio que usemos.
¿Cuál deberíamos usar host o nombre de host?
En Firefox 5 y Chrome 12:
console.log(location.host);
console.log(location.hostname);
.. muestra lo mismo para ambos.
¿Es porque el puerto no está realmente en la barra de direcciones?
W3Schools dice que el host contiene el puerto.
¿Debería validarse location.host/hostname o podemos estar bastante seguros en IE6 + y en todos los demás?

Respuestas:
Como una pequeña nota: el enlace interactivo anatomía
-
En resumen (suponiendo una ubicación de
http://example.org:8888/foo/bar#bang):hostnamete dioexample.orghostte dioexample.org:8888fuente
:y el puerto. Me pregunto cuánto de la discusión todavía está disponible desde cuandolocation.hostse formuló ... Sospecho que se llama así hoy porque nadie presente había leído o pensado mencionar ese RFC.host solo incluye el número de puerto si hay uno especificado. Si no hay un número de puerto específicamente en la URL, entonces devuelve lo mismo que el nombre de host. Usted elige si desea coincidir con el número de puerto o no. Ver https://developer.mozilla.org/en/window.location para obtener más información.
Supongo que desea que el nombre de host solo obtenga el nombre del sitio.
fuente
Si insiste en usar el
window.location.originPuede poner esto en la parte superior de su código antes de leer eloriginSolución
PD: Para el registro, en realidad era la pregunta original. Ya fue editado :)
fuente
window.location.originen su pregunta. Su pregunta era en realidad específicamente con respecto a cosas que no lo sonwindow.location.origin.Su pregunta principal ha sido respondida anteriormente. Solo quería señalar que la expresión regular que estás usando tiene un error. También tendrá éxito en
foo-domain.comque no es un subdominio dedomain.comLo que realmente quieres es esto:
fuente
MDN: https://developer.mozilla.org/en/DOM/window.location
Parece que obtendrá el mismo resultado para ambos, pero
hostnamecontiene un nombre de host claro sin paréntesis o número de puerto.fuente
Solo para agregar una nota de que el navegador Google Chrome tiene un atributo de origen para la ubicación. que le proporciona el dominio completo desde el protocolo hasta el número de puerto como se muestra en la siguiente captura de pantalla.
fuente