我正在尝试检查给定的网址是否可以从我当前的主机访问。
$(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”,但遗憾的是似乎不起作用。
是否有其他解决方案/插件可以检查我的主机是否可以访问网址?
答案 0 :(得分:1)
尝试使用Image
元素,设置其.src
属性,然后捕获.onerror
个事件。
图像不受与XMLHttpRequest
个对象相同的CORS限制。
您可能需要在图片网址上添加一个随机后缀(例如#<timestamp>
),以确保您的应用不会被缓存欺骗。
答案 1 :(得分:-1)
作为Alnitak答案的补充,你可以在ajax转向缓存
$.ajax({ cache: false,...});
这会产生与在网址上添加随机后缀相同的结果