2011-08-18 18 views
7

È possibile risolvere un nome host utilizzando Javascript?Eseguire una ricerca DNS per risolvere un nome host in un indirizzo IP utilizzando JavaScript

qui sarebbe codice ipotetico:

var hostname = "www.yahoo.com"; 
var ipAddress = DnsLookup(hostname); 
console.log(ipAddress); 

Cerco quella funzione magica DnsLookup(). :-)

+0

@PatrikAlienus: non hai capito la domanda. Come [x-nl ha detto] (http://stackoverflow.com/questions/7113072/resolve-a-hostname-with-javascript/31500047#comment36968223_7113122), il tuo commento è "bollocks". –

+0

@DanDascalescu Immagino che la domanda che cito sopra sia sbagliata. Avere un segno di spunta e 277 upvotes ... –

+1

@PatrikAlienus: l'OP vuole risolvere un * hostname arbitrario * in un IP. La risposta a cui si collega ottiene * solo il nome host della pagina corrente * da 'window.location' e non tenta di risolverlo. –

risposta

0

Avrete bisogno di richiamare sul lato server e risolvere il valore da lì. Non è disponibile la funzionalità di ricerca DNS standard in Javascript.

-2

No - javascript è bloccato dall'effettuare richieste su più domini. Ci sono potenzialmente alcuni hack che potrebbero essere in grado di aiutarti (this sembra un po 'promettente), ma di default non puoi farlo.

potrebbe essere in grado di chiedere qualcosa e assicurarsi di avere indietro un HTTP 200.

+0

In che modo la libreria di riferimento aiuterà Amir a ottenere l'indirizzo IP dell'host ?? Le richieste interdominio non hanno nulla a che fare con questo: non è possibile risolvere gli host sul front-end! – Vladimir

+0

Questa risposta non è valida. Vedi: http://stackoverflow.com/questions/1368264/get-host-name-in-javascript/17336519#17336519 –

+2

@PatrikAlienus Bollocks –

3

Mentre non v'è alcuna funzionalità DNS standard in JavaScript, si può sempre chiamare un'API pubblica 3a parte che fa la risoluzione DNS.

Per esempio, Encloud provides such an API, ed è possibile effettuare una XMLHttpRequest per esso:

var oReq = new XMLHttpRequest(); 
 
oReq.onload = function() { 
 
    var response = JSON.parse(this.responseText); 
 
    alert(JSON.stringify(response.dns_entries)); 
 
} 
 
oReq.open("get", "https://www.enclout.com/api/v1/dns/show.json?auth_token=rN4oqCyJz9v2RRNnQqkx&url=stackoverflow.com", true); 
 
oReq.send();

Naturalmente, si dovrebbe ottenere il proprio token di autenticazione. Gli account Free Enclout sono limitati a 6 richieste al minuto.

Se si desidera solo l'IP, effettuare una richiesta GET per http://api.konvert.me/forward-dns/yourdomain.com.

+1

Questo risolve il nome host sul server di Enclout, non sulla macchina su cui è in esecuzione il javascript. L'IP risultante potrebbe quindi essere diverso. – Arthur

Problemi correlati