【发布时间】:2013-07-19 15:19:00
【问题描述】:
我正在尝试这段代码,但它给了我一个 DOM 异常。我希望它使用纯 Javascript 从函数中获得真/假“答案”。
var url = 'http://www.google.com/';
function UrlExists(url)
{
var http = new XMLHttpRequest();
http.open('HEAD', url, false);
http.send();
return http.status!=404;
}
UrlExists(url);
我从 this 那里得到了这个代码所以回答,但正如我所说的我无法让它工作......
【问题讨论】:
-
此方法不适用于同源策略。您必须使用服务器端组件来检查 URL 是否存在。一种选择是在此答案中使用 YQL:stackoverflow.com/a/13041787/133198
-
@vsr,谢谢你的想法。有没有客户端方法可以做到这一点?
-
客户端只有在
url的主机支持CORS(html5rocks.com/en/tutorials/cors)时才可能。由于许多网站不支持 CORS,因此客户端解决方案并非万无一失。 -
破解 SOP 的唯一方法是以浏览器认为更安全的方式加载页面,方法是使用带有另一个元素的 hack。我建议尝试使用
onerror处理程序来处理img或object标记,看看您是否可以检索状态码。过去我曾类似地滥用过iframes,但那里有一些限制(我已经有效地使用它来处理 fire and forget 调用,或者当 iframe 源显式回调父级时)。
标签: javascript xml ajax