2011-08-18 203 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