Je souhaite créer une page Web dans laquelle j'ajouterai des liens intranet. Je voulais juste savoir comment vérifier si le lien que j'ai ajouté, à un moment donné fonctionne ou non. Je veux marquer le lien en ROUGE s'il ne fonctionne pas, sinon il devrait être vert.Comment vérifier si un lien est actif ou non?
Répondre
Si vous voulez un contrôle programmatique léger, vous pouvez faire une requête HTTP HEAD et vérifier un code de réponse supérieur ou égal à 200 et inférieur à 400.
quelque chose Ping de l'autre côté du lien. Alors que vous pourriez probablement trouver des moyens de vérifier l'état de l'interface ou des tables de routage ou d'autres choses ... ce que vous voulez vraiment savoir, c'est si le trafic circule vers et depuis cette destination.
On peut utiliser unix ping
avec l'argument -c
d'envoyer un certain nombre de paquets, et -w
pour indiquer le temps d'attente en secondes. Ensuite, vérifiez le statut de sortie:
ping -c 3 -w 5 remote-host
ping quittera avec un code de sortie différent de zéro si les paquets sont supprimés.
Si vous voulez vérifier côté client ...
<style type="text/css">
.good {
color:green;
}
.bad {
color:red;
}
</style>
<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1/jquery.js"></script>
<script type="text/javascript">
$(document).ready(function(){
$("a.checkLinks").each(checkme);
})
// load page from URL with ajax
function checkme(i, item) {
$.ajax({
type: "GET",
url: item.href,
success: function(data, textStatus) {
$(item).addClass("good");
},
error: function(request) {
$(item).addClass("bad");
}
});
}
</script>
<a class="checkLinks" href="good.html">Good</a><br/>
<a class="checkLinks" href="bad.html">Bad</a>
Cela ne fonctionnera pas réellement en raison des restrictions inter-domaines –
bon point. corriger pour assumer le même domaine. –
Si vous voulez vérifier côté sever (exemple php):
<?php
function isup($url)
{
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_HEADER, true);
curl_setopt($ch, CURLOPT_NOBODY, true);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
if(curl_exec($ch)) {
$httpcode = curl_getinfo($ch, CURLINFO_HTTP_CODE);
return ($httpcode < 400);
}
return false;
}
$url = "http://example.com/404";
printf('<a href="%s" class="%s">Link</a>', $url, isup($url) ? 'good' : 'bad');
réponse @Stef ping n'indique pas si un serveur web est courir encore moins si le document lié existe sur elle. ping seulement prouve qu'une machine est joignable sur un réseau. – Asaph
Ah, je pensais par «lien» que vous vouliez dire lien réseau. Ce n'était pas clair pour moi qu'il s'agissait d'un lien vers une page Web. – Stef