2017-03-09 113 views
0

我想使用JavaScript檢查遠程網站是否可訪問。檢查是否可以通過JavaScript訪問遠程網站

<button onclick="check()">check</button> 

<script> 
function check(ip) 
{ 
    var xhr = new XMLHttpRequest(); 
    var target = "https://letsencrypt.org/"; 
    var rndNum = Math.round(Math.random() * 10000); 

    xhr.open('HEAD', target + "?rand=" + rndNum, true); 
    xhr.send(); 

    xhr.addEventListener("readystatechange", processRequest, false); 

    function processRequest(e) 
    { 
     if (xhr.readyState == 4) 
     { 
     if (xhr.status >= 200 && xhr.status < 304) 
     { 
      alert('up'); 
     } 
     else 
     { 
      alert('down'); 
     } 
     } 
    } 
} 
</script> 

此代碼的工作,但僅限於本地target S,如跨域請求被阻止。該代碼可以執行here,當按鈕被點擊的JavaScript控制檯日誌:

Cross-Origin Request Blocked: The Same Origin Policy disallows reading the remote resource at https://letsencrypt.org/?rand=6236. (Reason: CORS header ‘Access-Control-Allow-Origin’ missing). (unknown) 

我相信我讀過,這應該與遠程地址以及莫名其妙的工作。

一般來說,如果網絡服務器應答,我認爲可達,甚至404返回碼告訴我,網絡服務器已啓動並且答案,只是特定的資源已關閉。

如何修改我的功能,檢查遠程地址的連通性?

+1

您嘗試訪問的遠程網站需要有'Access-Control-Allow-Origin:*'才能使用(或僅將您的域名列入白名單) – Raymond

+0

另外,如果網站返回4xx代碼 – paqash

+0

@Raymond如果遠程服務器具有'Access-Control-Allow-Origin:*'(或白名單),那麼這個函數應該可以工作? @paqash是的,謝謝!我需要把它整理出來! – MikeDyson

回答

1

爲了向網站發送XML請求,請確保它們有Access-Control-Allow-Origin: */or your domain,否則它將無法工作。

相關問題