使用xml http為網站增加網域名稱查詢功能

來源:互聯網
上載者:User
xml 當我們準備建立一個Web網站時,就必須向網域名稱登記機構申請一個Internet網域名稱,因此,我們通常希望瞭解自己準備使用的網域名稱是否已經被註冊,這時,可以訪問NIC網站http://www.nic.net,點擊"whois"連結後輸入需查詢的網域名稱,就可以得到我們需要的結果。

WHOIS為.com、.net和.org的國際頂級網域名稱的查詢返回全部的whois資料,包括網域名稱註冊人、管理合約、連絡方式(電話、電子郵件、地址)、帳單聯絡、支援人員和網域名稱資訊,對於使用者瞭解一個的基本情況很有協助。在很多網域名稱註冊服務商的中,通常都有whois(網域名稱查詢)的進階服務,但個人因為不具備網域名稱註冊服務商的資格和資料,所以在一般條件下無法提供whois服務。

其實,利用XMLHTTP協議,我們每個人都可以在自己的個人中提供網域名稱詳細情況查詢(WHOIS)服務,本文介紹了如何使用ASP結合xmlhttp編程來實現這個功能。

一、原理

原理非常簡單,網域名稱的查詢主要是基於RFC954提供的WHOIS協議。在實現過程中,我們通過自己的WEB訪問NIC網站的WHOIS,從WHOIS中查詢我們所需要的內容,然後通過ASP組合成網頁回送給用戶端。

同時,我們使用xmlHttp協議實現用戶端網頁無重新整理效果以及向服務端提出檢索WHOIS資料的要求。

具體流程為:用戶端通過xmlhttp提出網域名稱查詢要求-->WEB中的ASP偵聽頁接受請求後使用xmlhttp向WHOIS發送檢索命令-->WHOIS執行查詢操作,返回結果給我們自己的WEB(html形式)-->WEB接收到內容後,立即將結果傳送給用戶端->用戶端瀏覽器使用vbscript過濾掉HTML多餘部分,挑選出whois資料顯示出來。

二、ASPXmlHttp編程簡述

1、用戶端html頁面:



<scriptlanguage="vbscript">

 Subsubmit1_onmouseup'當點擊“查詢”按鈕時觸發;

DimobjXML,objXSL,objFSO,strFile,strFileName,strXSL,strURL,TheForm

SetTheForm=Document.wordfind

window.status="正在檢索資料···"

strURL="dns.asp"

SetobjXML=CreateObject("Microsoft.XMLHTTP")'建立MS的XMLHTTP組件;

stra="submit=submit&fqdn="&TheForm.words.value

objXML.Open"post",strURL,false'採用Post提交方式;

objXML.setrequestheader"content-length",len(stra)

objXML.setrequestheader"content-type","application/x-www-form-urlencoded"

objXML.sendstra'發送資訊

xmlGet=objXML.responseText'稍等片刻後,得到端傳回來的結果;

ifinstr(1,xmlGet,"Thisisnotavalid.com.net.org.infoor.bizdomain name",1)<1andlen(trim(xmlGet))>100then

 ifinstr(1,xmlGet,"Thisdomainisavailable",1)<1then

ifinstr(1,xmlGet,"Registrant:",1)then

strFind1=instr(1,xmlGet,"Registrant:",1)

else

strFind1=instr(1,xmlGet,"<pre><FONTface=""Verdana,Arial",1)+65

strFind2=instr(1,xmlGet,"</FONT></pre>",1)

 strFind4=strFind2-strFind1

 sHTML=mid(xmlGet,strFind1,strFind4)

 TheForm.comments.value="查詢結果:"+chr(13)+chr(10)+sHTML

 window.status="查詢結果:該網域名稱已被佔用"

 else

TheForm.comments.value="恭喜你,此網域名稱可用!"

window.status="查詢結果:該網域名稱仍然處於可用狀態!"

 endif

else

 TheForm.comments.value="無效的國際頂級網域名稱!請輸入以(.com.net.org.infoor.biz)結尾的國際網域名稱,例如sun.com"

 window.status="無效的國際頂級網域名稱!請輸入以(.com.net.org.infoor.biz)結尾的國際網域名稱,例如CCTV.com"

endif

SetobjXML=Nothing

 endsub

</script>

<html><head><title>XMLHTTP之網域名稱查詢篇</title></head>

<bodybgColor=#cccca3>

<formmethod="post"name=wordfindonsubmit="javascript:returnfalse">

請輸入欄位名名稱:<inputtype="text"value="cctv.com"name="words"size="69">

<inputtype="submit"value="查詢"id=Submit1name=Submit1>

<TEXTAREAname=commentsreadonlyrows=10cols=76></TEXTAREA>

</form></body></html>


2、端ASP程式:



<%dimxmlGet,objXML,objXSL,objFSO,strFile,strFileName,strXSL,strURL

 xmlGet=""

 iflen(trim(Request.form("fqdn")))>1then

strURL="http://www.domainbank.net/whoisresults_gen.cfm?show=1"

'WhoIS的地址

SetobjXML=CreateObject("Microsoft.XMLHTTP")'建立MS的XMLHTTP組件

stra="submit=submit&fqdn="&trim(Request.form("fqdn"))

objXML.Open"post",strURL,false

objXML.setrequestheader"content-length",len(stra)

objXML.setrequestheader"content-type","application/x-www-form-urlencoded"

objXML.sendstra'發送資訊到WhoIs;

xmlGet=objXML.responseText'取得網域名稱返回的資訊

SetobjXML=Nothing

 endif

 response.writexmlGet'返回結果給用戶端

%>


在上述過程中,可以發現我們自己的WEB中的ASP程式其實只起到一個中間傳遞的作用,在實際應用中,也可以省去這個中介層,使用vbscript通過xmlhttp直接向WHOIS發送和接收資料。不過這樣的話,可能會因為IE中“通過(其它)域訪問資料資源”被禁用(預設)而引起許可權不夠導致無法執行,所以該省去ASP中介層的方法並不太通用。

相關文章

E-Commerce Solutions

Leverage the same tools powering the Alibaba Ecosystem

Learn more >

Apsara Conference 2019

The Rise of Data Intelligence, September 25th - 27th, Hangzhou, China

Learn more >

Alibaba Cloud Free Trial

Learn and experience the power of Alibaba Cloud with a free trial worth $300-1200 USD

Learn more >

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。