问题是我的网站上有很多外部下载链接,有些链接已经过期,所以我想自动检测过期的链接。
对我来说,有效链接是指向我的一个文件服务器的直接文件下载链接。损坏的链接会导致一个带有错误消息的简单 html 页面。
我的第一个想法是获取下载链接的html源代码,看看它是否包含错误但它不起作用。我也尝试过 javascript,但问题是 js 不处理外部链接。
有任何想法吗??多谢
问题是我的网站上有很多外部下载链接,有些链接已经过期,所以我想自动检测过期的链接。
对我来说,有效链接是指向我的一个文件服务器的直接文件下载链接。损坏的链接会导致一个带有错误消息的简单 html 页面。
我的第一个想法是获取下载链接的html源代码,看看它是否包含错误但它不起作用。我也尝试过 javascript,但问题是 js 不处理外部链接。
有任何想法吗??多谢
这不是前端的任务,而是后端的任务。正如超新星所说,每天从您的服务器检查一次。AJAX 请求不会是您的答案,因为浏览器安全策略不允许对不同域的请求。
解决方案:
好的,根据您的评论,检查此解决方案:
<html>
<head>
<script src='http://ajax.googleapis.com/ajax/libs/jquery/1.7.1/jquery.min.js'></script>
<script>
$(document).ready(function(){
var linksDiv = $('#links');
$('#generateLinks').click(function(){
//I don't know your logic for this function, so I'll try to reproduce the same behavior
var someURLs = ['http://www.google.com','http://www.djfhdkjshjkfjhk.com', 'http://www.yahoo.com'];
linksDiv.html('');
for(var i = 0; i < someURLs.length; i++){
var link = $('<a/>').attr('href', someURLs[i]).append('link ' + i).css('display','block');
linksDiv.append(link);
}
});
$('#getLinksAndSend').click(function(){
var links = linksDiv.find('a');
var gatheredLinks = [];
$(links).each(function(){
gatheredLinks.push(this.href);
});
sendLinks(gatheredLinks);
});
var sendLinks = function(links){
$.ajax({
url: "your_url",
type: "POST",
data: {
links: links
}
}).done(function(resp) {
alert('Ok!')
});
}
});
</script>
</head>
<body>
<div id="links">
</div>
<button id="generateLinks">Generate all links</button>
<button id="getLinksAndSend">Get links and send to validator</button>
</body>
</html>
如果您不介意让客户端完成工作,您可以尝试使用 javascript 来完成。
我有一个greasemonkey 脚本,它会自动检查打开页面中的所有链接,并根据服务器响应(未找到、禁止等)标记它们。
看看你能不能从中得到一些想法: http: //userscripts.org/scripts/show/77701
我知道跨域策略不适用于 GM_xmlhttprequest,如果想使用 javascript 解决方案,可能必须尝试解决方法,例如:
如果您想要服务器端解决方案,我相信上述答案可以帮助您。
这可能有点矫枉过正,但 linux kde 中有一个名为 klinkstatus 的程序可以在网站中找到损坏的链接: