2017-09-11 9 views
-2

私の目的は、クライアント側からURLが有効かどうかをチェックすることです。私は以下のことを試しました: 1. dataTypeをJSONとして使用してajaxリクエストを試しました。 - Cross-Origin Request Blockedエラーが発生しました。 2. JSONPをデータ型として試しました。 - 「 FaceBookURLがクライアントサイドコードに存在するかどうかをチェックする

callback=jQuery32107833494968122849_1505110738710&_=1505110738711' 

からスクリプトを実行するために拒否のようなエラーが手に入れたgoogle.comのようないくつかのウェブサイトのためにうまく働いたが、それはfacebook.com

のように、他人のためにcribed、そのMIMEタイプ

('text/html')は実行可能ではなく、厳密なMIMEタイプチェックが有効になっています。

この問題を回避する方法はありますか?私は、URLが応答内のコンテンツに関係なく有効であることを確認したいだけです。

<html> 
    <body> 
    <script 

    src="https://ajax.googleapis.com/ajax/libs/jquery/3.2.1/jquery.min.js"> 
    </script> 
<script> 
    function CallPageMethod() { 
      $.ajax({ 
       type: "GET", 
       url: "https://www.google.com/", 
       dataType: "jsonp", 
       success: function (data, textStatus, xhr) { 
        alert("Success"); 
       }, 
       error: function (data, textStatus, xhr) { 
        if (data.status === 200) { 
         alert("Finally I am done") 
        } else { 
         alert("Error"); 
        } 
       }, 
      }); 
    } 
</script> 
<Button onclick="CallPageMethod()">Test URL</Button> 
</body> 

</html> 

任意の提案や、私はこの問題を解決するために行う必要がある任意の代替的なアプローチ:

私が書いたコードを以下に示しますか?

+1

このクライアントサイドを行う適切な方法はありません。これは「すべてのWebサイトで機能する」ものです。 – CBroe

答えて

0

ほとんどのサイトは、サイトから直接またはサイトのホスティング会社から提供されたfavicon.icoを持っています(404イメージの場合)。

<img src="https://www.google.com/favicon.ico" 
    onload="alert('icon loaded')"> 
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.2.1/jquery.min.js" 
    onload="alert('ajax loaded')"></script> 

iframeとオブジェクトにはonloadイベントがありますが、無効なページもイベントをトリガします。

これは私が考えることができる最速のサイトのテストだろう... Facebookのためとして

var img = new Image(); 
img.onload = function() { 
    alert("image width is " + img.naturalWidth + " not zero so site is valid"); 
} 
img.src = "https://www.google.com/favicon.ico"; 

は、各ページは、アイフレームをスクリプトと同様にブロックされている、別のURLからリソースを使用しています。ページが存在するかどうかをテストするために、サーバーから要求を出す必要があります。

関連する問題