2011-08-18 161 views
7

是否可以使用Javascript解析主機名?執行DNS查找以使用JavaScript將主機名解析爲IP地址

這裏是假設代碼:

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

我要尋找那神奇的DnsLookup()功能。 :-)

+0

@PatrikAlienus:你不明白這個問題。至於[x-nl說](http://stackoverflow.com/questions/7113072/resolve-a-hostname-with-javascript/31500047#comment36968223_7113122),你的評論是「bollocks」。 –

+0

@DanDascalescu我想我上面提到的問題是錯誤的。有一個複選標記和277 upvotes ... –

+1

@PatrikAlienus:OP想要解析*任意主機名*到IP。您鏈接到的答案只從* window.location *獲取當前頁面的主機名,並且不會嘗試解析它。 –

回答

0

您需要回調到服務器端並從那裏解析值。 Javascript中沒有標準的DNS查找功能。

-2

否 - JavaScript阻止提出跨域請求。有可能有一些黑客可以幫助你(this一看起來很有前途),但默認情況下,你不能這樣做。

您也許能獲得某些東西,並確保你得到一個HTTP 200

+0

引用的庫如何幫助Amir獲取主機的IP地址?跨域請求與此無關 - 您無法解析前端的主機! – Vladimir

+0

此答案無效。請參閱:http://stackoverflow.com/questions/1368264/get-host-name-in-javascript/17336519#17336519 –

+2

@PatrikAlienus Bollocks –

3

雖然沒有在JavaScript中沒有標準的DNS功能,您可以隨時撥打第三方公共API,做DNS解析。

例如,Encloud provides such an API,你可以做一個XMLHttpRequest吧:

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();

當然,你應該把你自己的身份驗證令牌。免費Enclout帳戶每分鐘限制爲6次請求。

如果您只是想要IP,請爲http://api.konvert.me/forward-dns/yourdomain.com發出GET請求。

+1

這解決了Enclout服務器上的主機名,而不是運行javascript的機器上的主機名。因此產生的IP可能會有所不同。 – Arthur

相關問題