首页 新闻 会员 周边 捐助

js如何检测一个跨域的资源是否存在

0
悬赏园豆:20 [已解决问题] 解决于 2015-03-12 18:17

A站的一个网页上有一个链接(类似:http://B/xxx/xxx/xxx.xxx),连接到B上面的一个资源(doc,rar等等),有时候A站链接里面的这个资源在B上其实是不存在的,现在要做的是是在A的这个页面里判断一个链接的资源存不存在,不存在的话就把链接隐藏起来。

我试了一下用ajax去请求,但不管资源存不存在都会报跨域的错误

最长的路漫漫的主页 最长的路漫漫 | 菜鸟二级 | 园豆:252
提问于:2015-03-12 15:14
< >
分享
最佳答案
0

此问题终结。放弃使用js在前端检测了,改在后台获取页面数据之后检测。

在网上找“js检测url是否可用”,千篇一律来的都是那么两个答案,用在同一个域下是没问题的,跨域都不行,而且那个例子本身都运行不通的。

最长的路漫漫 | 菜鸟二级 |园豆:252 | 2015-03-12 18:17
其他回答(3)
0

1、先处理跨域,然后再验证资源存不存在呀;

2、或者在B上提供一个可供跨域的api,提交url,用返回值来标识存不存在。

收获园豆:5
幻天芒 | 园豆:37205 (高人七级) | 2015-03-12 15:36

目前的想法是把资源链接的url使用jsonp的方式去请求,然后去处理404的状态,这种方法还在研究。B那边肯定是改不了的,我能改的只有A

支持(0) 反对(0) 最长的路漫漫 | 园豆:252 (菜鸟二级) | 2015-03-12 17:35
0
function downLoad(remoteURL, localURL) {

    try {
        var xmlHTTP = new ActiveXObject("Microsoft.XMLHTTP");
        xmlHTTP.open("GET", remoteURL, false);
        xmlHTTP.send();
        var adodbStream = new ActiveXObject("ADODB.Stream");
        adodbStream.Type = 1;//1=adTypeBinary   
        adodbStream.Open();
        adodbStream.write(xmlHTTP.responseBody);
        adodbStream.SaveToFile(localURL, 2);
        adodbStream.Close();
        adodbStream = null;
        xmlHTTP = null;

    } catch (e) {
        alert("不在了!URL=" + remoteURL);

    }
    return localURL;
}

直接去下载, 失败就会异常, 你再继续处理

收获园豆:5
问天何必 | 园豆:3311 (老鸟四级) | 2015-03-12 15:39

这种方法应该只能在IE下使用

支持(0) 反对(0) 最长的路漫漫 | 园豆:252 (菜鸟二级) | 2015-03-12 17:33
0

请求一个远程URL,根据http响应状态码StatusCode是否是404进行判断资源是否存在。客户端可以通过jsonp进行跨域访问,但是建议还是在服务端通过webclient访问远程资源,然后根据响应码进行显示隐藏控制。

收获园豆:10
JeffWong | 园豆:2328 (老鸟四级) | 2015-03-12 17:03

可以尝试一下

支持(0) 反对(0) 最长的路漫漫 | 园豆:252 (菜鸟二级) | 2015-03-12 17:36

@最长的路漫漫: 一开始,其实我是拒绝的...赶紧把园豆送给我。

支持(0) 反对(0) JeffWong | 园豆:2328 (老鸟四级) | 2015-03-12 17:43
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册