此问题终结。放弃使用js在前端检测了,改在后台获取页面数据之后检测。
在网上找“js检测url是否可用”,千篇一律来的都是那么两个答案,用在同一个域下是没问题的,跨域都不行,而且那个例子本身都运行不通的。
1、先处理跨域,然后再验证资源存不存在呀;
2、或者在B上提供一个可供跨域的api,提交url,用返回值来标识存不存在。
目前的想法是把资源链接的url使用jsonp的方式去请求,然后去处理404的状态,这种方法还在研究。B那边肯定是改不了的,我能改的只有A
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; }
直接去下载, 失败就会异常, 你再继续处理
这种方法应该只能在IE下使用
请求一个远程URL,根据http响应状态码StatusCode是否是404进行判断资源是否存在。客户端可以通过jsonp进行跨域访问,但是建议还是在服务端通过webclient访问远程资源,然后根据响应码进行显示隐藏控制。
可以尝试一下
@最长的路漫漫: 一开始,其实我是拒绝的...赶紧把园豆送给我。