检查是否可以从当前主机访问URL

时间:2016-06-07 14:12:07

标签: javascript jquery ajax url

我正在尝试检查给定的网址是否可以从我当前的主机访问。

$(document).ready(function(){

    url1 = "https://upload.wikimedia.org/wikipedia/commons/thumb/4/45/GuitareClassique5.png/150px-GuitareClassique5.png";
    urlYoutube = "https://www.youtube.com/embed/F2AitTPI5U0";
    url3 = "https://techslides.com/demos/sample-videos/small.mp4";
    brokenUrl = "http://www.example.com/images/1.png";  


    $.ajax({
     url: url3,
     type: "HEAD",
     fail: function () { alert("Error triggered "); },
     success: function () { alert("Success triggered"); }
    }); 


});

所以我的问题是 url1 是唯一给我正确答案的人。 urlYoutube url3 brokenUrl 会返回CORS错误:没有'Access-Control-Allow-Origin'标头出现在请求的资源。因此,不允许原点'null'访问。

所以我在互联网上寻找解决方案,而我提出的解决方案是在ajax请求参数上添加 dataType:“jsonp”,但遗憾的是似乎不起作用。

是否有其他解决方案/插件可以检查我的主机是否可以访问网址?

2 个答案:

答案 0 :(得分:1)

尝试使用Image元素,设置其.src属性,然后捕获.onerror个事件。

图像不受与XMLHttpRequest个对象相同的CORS限制。

您可能需要在图片网址上添加一个随机后缀(例如#<timestamp>),以确保您的应用不会被缓存欺骗。

答案 1 :(得分:-1)

作为Alnitak答案的补充,你可以在ajax转向缓存

$.ajax({ cache: false,...});

这会产生与在网址上添加随机后缀相同的结果