4519


あるサーバーがよく落ちるので、chrome拡張アプリで死活監視プログラムを書いてみました。  
死活の判断はステータスコードが200でresponseURLがopenにセットしたのと同じ場合に生存と判断をして、それ以外は死亡としました。  
これで一応動いたのですが、サーバーがDDNSから接続先が見つからないとDDNSの管理する警告画面に飛ばされます。  
その時の違いは画像の通りで、ステータスコードが200でresponseURLは同じでした。  
本来はDDNSの不具合でサーバーにつながらないので死亡中と判断をしたいのですが、ステータスコードとURLが同じなので生存と判断してしまっています。

ここで質問なのですが、DDNSにつながってしまった時死亡と判断するにはどうしたらよいでしょうか？  
HTMLの中身が違うのでその差を比較するしか無いのでしょうか？  
（例えばタイトルを抜き出して比較する等）

[github masakinihirota/GreenHeartRedCross_trial
chrome拡張アプリの公開先](https://github.com/masakinihirota/GreenHeartRedCross_trial)

responseとresponseTextだけが違う。

![DDNSの警告画面に接続された時のXMLHttpRequestのデータ](https://i.stack.imgur.com/RmaVk.png)

![サーバーに接続した時のXMLHttpRequestのデータ](https://i.stack.imgur.com/NrS4P.png)


CC BY-SA 3.0
2015-01-12T18:03:48.310
4459
2015-01-13T22:02:16.717
3612
question
javascript google-chrome-apps
XMLHttpRequestでサーバーの生存確認をしたい、しかしDDNSで失敗してしまう。


質問の意図とは少し違いますが、  
静的htmlを使って監視するなら、まだPINGで監視した方がマシでしょうね。

サーバーが返すhttpステータスコードはサーバー上で設定されたコードを返すだけです。  
正常に設定をされていないと予測されたコードは返ってきませんし、対象のサーバーが返すとは限りません。

htmlは経路にあるキャッシュ等が邪魔することが多いので  
正確な死活監視をするなら、CGIで日時データ等を返すxmlページを設置して  
それを確認してチェックした方がいいかと思います。

世の中には本物のサーバーのふりをして200okなのに旧いキャッシュを返すという  
困ったキャッシュサーバーも存在します…

ぇぇ。たった1分前後表示されただけの再起動中のhtmlを  
1周間返し続けた某大手プロバイダの非公開キャッシュサーバーとかね←


CC BY-SA 3.0
2015-01-13T01:15:45.597
4463
2015-01-13T01:15:45.597
5479
4459
answer


汎用的にしたいのであれば難しいけど、とりあえずそこを対処するためには内容で比較するくらいしか無いでしょうね。  
もしくは存在するパスに投げてみたときに、トップにリダイレクトされるのであればそれで判断するとか。


CC BY-SA 3.0
2015-01-13T22:02:16.717
4519
2015-01-13T22:02:16.717
5721
4459
answer