¿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
):hostname
te dioexample.org
host
te dioexample.org:8888
fuente
:
y el puerto. Me pregunto cuánto de la discusión todavía está disponible desde cuandolocation.host
se 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.origin
Puede poner esto en la parte superior de su código antes de leer elorigin
Solución
PD: Para el registro, en realidad era la pregunta original. Ya fue editado :)
fuente
window.location.origin
en 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.com
que no es un subdominio dedomain.com
Lo que realmente quieres es esto:
fuente
MDN: https://developer.mozilla.org/en/DOM/window.location
Parece que obtendrá el mismo resultado para ambos, pero
hostname
contiene 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