"Diary" インターネットさんへの恩返し

いつもソースコードコピペばかりなので,みなさまへ少しばかりの恩返しを

javascriptでリンク切れチェックをする方法



スポンサーリンク

f:id:azumami:20150222003904p:plain
リンク切れチェックをするWebサービスって色々存在しますが自身の製作中のサイトに同じような機能を持たせようといろいろ調べました。

方法としては、以下の2パターンがあるかと思います。

  1. クライアント側でjavascriptを使う
  2. サーバサイド側で(phpruby、node.js、wgetとか)で得た結果をクライアントへ投げる

1.の場合は、ブラウザのクロスドメインの制限によってクライアントサイドからはできません。しかし、以下のjqueryプラグインを使用するとクライアントからAjaxできます。ただし、返ってくるのはresponse.text(チェック対象のサイトのhtmlのソース)だけでレスポンスコードは返ってきません。なのでスクレイピングとか、サーバへの接続テストレベルなら使えるかも。

jquery.fn/cross-domain-ajax at master · padolsey/jquery.fn · GitHub

1はそのまま、読みこむだけで使えるので特に、説明も不要かと思いますので、以下はサーバサイド側でやってみたときのソースを記載しています。

  • サーバサイドのプログラム(node.js)
exports.urlckeck = function(req, res){
    
   //postで送られてきたデータを取得。"url"変数にチェック対象のURLが入っています。
    var option = {
          url: req.body.url
        };

    console.log("check url existance of " + req.body.url);

    request.get(option, function (err, data) {

        if(err){
            console.log(err);
            res.send({ 
                    "result" : "1",
                    "url"    : option.url,
                    });
        }else{
            res.send({ 
                "result" : data.statusCode,
                "url"    : option.url,
            });                
        }
    });


}
  • クライアントサイドのプログラム(javascript)
function checkURL(){

    $.ajax({
      type : "POST",
       url : "node.jsで待ち受けているURL",
     cache : false,
      data : { url : "チェック対象のURL" },
    success: function(data){
                if(data.result==200){
                   // 200の場合成功             
                }else{
                   // 200以外のレスポンスコードの場合
                }
            },
      error:  function(data){
                   // node.jsに接続が失敗した場合
            }
    
    });
    
}

実践Node.js プログラミング (Programmer's SELECTION)

実践Node.js プログラミング (Programmer's SELECTION)