Obtenir le nom de domaine sans les sous-domaines à l'aide de JavaScript?
Comment obtenir le nom de domaine sans les sous-domaines?
par exemple, si l'url est "http://one.two.roothost.co.uk/page.html" comment obtenir de l' "roothost.co.royaume-uni"?
- Ce n'est pas ce que vous appelez le nom canonique.
- wiki.apache.org/httpd/CanonicalHostNames
- Juste pour préciser, par "canonique nom d'hôte" vous voulez dire que "un.de deux.roothost.co.royaume-uni" redirige vers "roothost.co.royaume-uni", comme décrit dans le lien ci-dessus, correct?
- maintenant, vous allez avoir à définir "la racine du nom d'hôte" pour nous
- par root le nom de l'hôte, je veux dire le nom de domaine enregistré. la racine de l'hôte avec tous les sous-domaines supprimés, comme je l'ai décrit dans la question. c'est à dire une.de deux.roothost.co.uk => roothost.co.royaume-uni
- Donc, si je héberger mon site bobsfreehost.com et Bob me donne le sous-domaine "leur," voulez-vous mystuff.bobsfreehost.com ou bobsfreehost.com? Voir où je vais avec ça?
- Je pense que maintenant j'ai la question aussi claire que je peux le faire. N'avez pas à vous soucier de où est Bob l'hébergement de son site web. Peu importe où il est hébergé. J'ai besoin d'un moyen sûr de trouver Un Enregistrement de nom d'hôte d'une url donnée.
- Jetez un oeil à cette question et la réponse. stackoverflow.com/questions/736513/...
- J'ai ajouté le bounty que j'aimerais savoir de l'hôte, sans les sous-domaines, la question que vous avez lié à ne pas vous aider.
- J'ai posté une réponse ci-dessous avec le travail JSFiddle lien. Pouvez-vous s'il vous plaît confirmer si ça vous aide ?
- Jusqu'à présent, la seule réponse que je peux voir, c'est "correct" serait l'un @MaximillianLaumeister posté, mais je ne peux pas accepter la prime pour l'autre 21 heures, donc je vais attendre jusque-là et voir si quelqu'un d'autre arrive avec de quoi que ce soit. Personnellement, je suis à la recherche d'un moyen d'obtenir n'IMPORTE quel domaine sans le sous-domaine, votre réponse ressemble, il ne fonctionne que pour certains types de domaines et de ne pas utiliser une méthode éprouvée de la bibliothèque ou de la méthode pour obtenir le résultat à la différence de son.
Vous devez vous connecter pour publier un commentaire.
Qui suit est une solution pour extraire un nom de domaine sans les sous-domaines. Cette solution n'est pas de faire des hypothèses sur le format de l'URL, donc ça devrait marcher pour n'importe quelle URL. Depuis quelques noms de domaine ont un suffixe (
.com
), et certains en ont deux ou plus (.co.uk
), pour obtenir un résultat précis, dans tous les cas, nous avons besoin d'analyser le nom de l'hôte à l'aide de la Public Liste De Suffixes, qui contient une liste de tous les noms de domaine public suffixes.Solution
Tout d'abord, incorporez le public suffixe liste des api js dans une balise script dans votre code HTML, puis en JavaScript pour obtenir le nom d'hôte, vous pouvez appeler le:
...qui sera de retour "roothost.co.royaume-uni". Pour obtenir le nom de la page en cours, vous pouvez utiliser
location.hostname
au lieu d'une chaîne statique:Enfin, si vous avez besoin d'analyser un nom de domaine directement d'une URL complète de la chaîne, vous pouvez utiliser les éléments suivants:
JSFiddle Exemple (il comprend l'ensemble de la compacte de la bibliothèque dans le jsFiddle, afin de faire défiler vers le bas!): https://jsfiddle.net/6aqdbL71/2/
Ce sujet...
google
le sous-domaine etco.in
le domaine 🙂 Bien que, tenant compte du fait que les domaines doivent être en mesure d'exister sans les sous-domaines,co.uk
n'est pas un domaine. Alors, dans ce cas, yeap, ce script va échouer pour ces cas.Cela fonctionne pour moi:
JS:
Referance:
psl.min.js fichier
Maximilien Laumeister Réponse à cette question
www.d7143.test.me
. Il crached7143.test.me
au lieu detest.me
.Ici est un travail JSFiddle
Ma solution fonctionne avec l'hypothèse que la racine du nom d'hôte que vous cherchez est de type "abc.xyz.pp".
extractDomain()
retourne le nom d'hôte avec tous les sous-domaines.getRootHostName()
divise le nom d'hôte par.
et puis, sur la base de l'hypothèse mentionnée ci-dessus, il utilise leshift()
d'enlever le nom de sous-domaine.Enfin, ce qui reste dans
parts[]
, il se joint à eux par.
pour former la racine du nom d'hôte.Javascript
HTML
EDIT 1: mise à Jour de la JSFiddle lien. Il a été reflétant le code incorrect.
roothost.co.uk
, mais votre script renvoieone.two.roothost.co.uk
.http://www.google.com/
. Voir ici: jsfiddle.net/5sccn55k/2Vous pouvez essayer dans la
JavaScript
:Il sera de retour le nom d'hôte.