有这样一个页面,点击一个地址会触发一个事件,携带一些参数给一个api,然后返回给你真正的链接,你需要打开这个链接。在打开这个链接之前需要验证一下这个url是否有效,无效的话需要提示链接失败啊什么的。请问这些要怎么实现
有这样一个页面,点击一个地址会触发一个事件,携带一些参数给一个api,然后返回给你真正的链接,你需要打开这个链接。在打开这个链接之前需要验证一下这个url是否有效,无效的话需要提示链接失败啊什么的。请问这些要怎么实现
首先通过
filter_var($url,FILTER_VALIDATE_URL)
判断url是否合法,然后通过http的head请求返回的code是否为200来判断url是否可访问。
PHP判断方法
<?php
$url = "/upload/201110/20111008192257383.gif";
$array = get_headers($url,1);
if(preg_match('/200/',$array[0])){
echo "<pre/>";
print_r($array);
}else{
echo "无效url资源!";
}
js判断方法
function NetPing() {
$.ajax({
type: "GET",
cache: false,
url: "http://www.jb51.net",
data: "",
success: function() {
Done(1);
},
error: function() {
Done(0);
}
});
}
实现需发起2次http请求,第1次获取访问的URL,第2次请求确认访问地址有效性,无效则提示,有效则访问(如 window.open 打开)。
第1次请求
使用 HTTP GET 或 POST 请求
带参数下发,在 success 回调函数中发起第2次请求;失败则进行提示。
第2次请求
使用 HTTP HEAD 请求
(HEAD与GET类似,但服务器响应时不会返回消息体,常用来测试超链接的有效性、可用性和最近的修改。)
根据第1次请求返回URL,发起 HEAD 请求,在 success 回调函数中进行访问;失败则进行提示。
如果觉得回调嵌套不优雅,可以使用ES6 Promise。
9 回答9.4k 阅读
6 回答5.1k 阅读✓ 已解决
4 回答13.4k 阅读✓ 已解决
5 回答3.7k 阅读✓ 已解决
5 回答7.8k 阅读✓ 已解决
4 回答8k 阅读✓ 已解决
7 回答10.1k 阅读