localizacao.máquina vs localização.compatibilidade entre o nome da máquina e o navegador?

Qual destes é o mais eficaz vs verificação se o agente do Utilizador está a aceder através do domínio correcto.

gostaríamos de mostrar um pequeno aviso de estilo js baseado em' top bar ' se eles estão acessando o domínio usando algum tipo de proxy web (como ele tende a quebrar o js).

estávamos a pensar em usar o seguinte:

var r = /.*domain\.com$/;
if (r.test(location.hostname)) {
    // showMessage ...
}
Isso trataria de todos os subdomínios que usarmos.

qual devemos usar a máquina ou o nome da máquina?

no Firefox 5 e no cromo 12:

console.log(location.host);
console.log(location.hostname);

.. mostra o mesmo para ambos.

Isso é porque o porto não está na barra de endereços?

O w3schools diz que a máquina contém o porto.

deve ser a localização.host / hostname ser validado ou podemos ter bastante certeza em IE6+ e todos os outros que ele vai existir?

Author: Druzion, 2011-07-17

6 answers

interactive link anatomy

Como um pequeno memorando, a anatomia interactiva da ligação

--

Em resumo (assumindo uma localização de http://example.org:8888/foo/bar#bang):

  • hostname dá-te example.org
  • host dá-te example.org:8888
 843
Author: abernier, 2018-02-14 15:02:20

A Máquina apenas inclui o número do porto se existir um indicado. Se não houver nenhum número de porta especificamente no URL, então ele retorna o mesmo que hostname. Escolha se quer corresponder ao número do porto ou não. Ver https://developer.mozilla.org/en/window.location para mais informações.

Presumo que queiras que o nome do host fique com o nome do site.

 67
Author: jfriend00, 2011-07-17 18:37:24

Se está a insistir em usar o window.location.origin Você pode colocar isto em cima de seu código antes de ler o origin

if (!window.location.origin) {
  window.location.origin = window.location.protocol + "//" + window.location.hostname + (window.location.port ? ':' + window.location.port: '');
}

Solução

Para que conste, foi a pergunta original. Provavelmente já o editaram. :)
 27
Author: Kenneth Palaganas, 2018-08-29 12:46:26

A sua pergunta principal foi respondida acima. Só queria dizer que a expressão regular que estás a usar tem um problema. Ele também terá sucesso em foo-domain.com que não é um subdomínio de domain.com

O que realmente queres é isto:

/(^|\.)domain\.com$/
 9
Author: bluesmoon, 2014-02-25 05:01:09

MDN: https://developer.mozilla.org/en/DOM/window.location

Parece que irá obter o mesmo resultado para ambos, mas hostname contém um nome de máquina livre sem parêntesis ou número de Porto.

 3
Author: Igor Dymov, 2011-07-17 18:39:20

Só para adicionar uma nota que o Google Chrome browser tem atributo de origem para a localização. o que lhe dá o domínio inteiro, desde o protocolo até ao número do porto, como mostrado na imagem abaixo. chrome developers tool

 0
Author: Gopi P, 2018-07-31 10:38:21