怎么判断获取到的url是否能访问

有这样一个页面,点击一个地址会触发一个事件,携带一些参数给一个api,然后返回给你真正的链接,你需要打开这个链接。在打开这个链接之前需要验证一下这个url是否有效,无效的话需要提示链接失败啊什么的。请问这些要怎么实现

阅读 22.8k
9 个回答
$.ajax({
    type:'get',
    url:'http://www.baidu.com',
    success:function(res,heads,code){
        console.log(code.status);
    }
})

首先通过

filter_var($url,FILTER_VALIDATE_URL)

判断url是否合法,然后通过http的head请求返回的code是否为200来判断url是否可访问。

你先用postman发送请求测试一下啊

你验证url是否有限无非就是验证是不是符合http协议喽?
一个有效地址:http : // www . xxx .com||cn
写个方法用正则,切分判断合法否我只能想到这样做了

用正则表达式判断是否是正确的URL即可,是则打开页面,否则不打开。至于链接失效,可以根据不同的HTTP Code跳转到不同的页面即可。

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。

首先需要判断整个的url是否符合要求。其次,可以发送option请求来解析response。

js 发送一个 ajax 请求,请求地址为后台返回的那个 url 地址,还可以指定返回数据的类型,无法访问或者返回的类型不正确会触发错误回调

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题
宣传栏