2017-04-04 2 views
-1

でCORS要求を行うそうでない場合は、「ダウン」、私はウェブサイト(たとえばwww.google.com)は、その後、「アップ」としてのステータスを表示利用可能な場合にping JSFiddle IEでウェブサイトをシミュレートしようとしていますJSFiddle

AJAXはCORSの要求になるため、動作しません。 Image source trickを使ってやってみましたが、失敗しました(更新されたコード)。

JSFiddleは

JS Fiddle

var sites = { 
 
    google: { 
 
    url: "http://www.google.com", 
 
    id: "googleStatus" 
 
    }, 
 
    dummy: { 
 
    url: "http://www.dummysitealphabeta2.com", 
 
    id: "dummySiteStatus" 
 
    } 
 
} 
 

 
pingSite(sites.google); // Should update status to "Up" 
 
pingSite(sites.dummy); // Should update status to "Down" 
 

 
// ping site using image trick wiz. Add source of site to image 
 
// and add handler to image onload or onerror 
 
function pingSite(site) { 
 
    var image = new Image(); 
 
    image.src = site.url; 
 
    image.onload = function() { 
 
    console.log("loading loaded for " + site.url + "successfully"); 
 
    } 
 

 
    image.onerror = function() { 
 
    console.log("Image loading failed for " + site.url); 
 
    } 
 

 
} 
 

 
// Using AJAX - Won't work because of CORS 
 
function getStatus(site) { 
 
    $.ajax(site.url).done(function() { 
 
    // Http 200 OK 
 
    $(site.id).html("Up"); 
 
    }).fail(function() { 
 
    // HTTP 401, 
 
    $(site.id).html("Down"); 
 
    }); 
 
}
<table> 
 
    <tr> 
 
    <td>Google</td> 
 
    <td id="googleStatus"></td> 
 
    </tr> 
 
    <tr> 
 
    <td>Dummy Site</td> 
 
    <td id="dummySiteStatus"></td> 
 
    </tr> 
 
</table>

答えて

0

私はそれを実行しようとしましたが "https://fiddle.jshell.net/_display/www.google.com" の代わりに "www.google.com" の画像のソースを設定しますImage source trickを使用していますが、JSFiddleは画像のソースを「https://fiddle.jshell.net/_display/www.google.com」に設定しています「www.google.com」の

www.google.com現在のパスにローカルな 相対 URLであるためだ

JSフィドルは何も設定していません。あなたのコードです。

異なるホスト名にアクセスする場合は、絶対URL(たとえば、http://またはhttps://で始まる)またはスキームの相対URL(//で始まる)のいずれかが必要です。

関連する問題