首先,让每个人都看看这个可爱的猫头鹰:
http://happy.fm/wp-content/uploads/2011/10/random-owl.jpg
我将其用作测试图像,以查看是否可以使用客户端Javascript检测给定的URL是否为合法图像。我在网上搜索并发现了一些应该起作用的简单代码:
const img = new Image();
img.onload = () => {
console.log("HOORAY! SUCCESS!", img);
}
img.onerror = () => {
console.log("BOO! FAIL!")
}
img.src = values.image;
如果我输入的URL具有有效的域,但文件路径错误,如下所示:
http://happy.fm/wp-content/uploads/2011/10/random-owlDOESNOTEXIST.jpg
...然后onerror()
可靠地开火。但是,如果域是伪造的,就像这样:
http://happy.fmDOESNOTEXIST/wp-content/uploads/2011/10/random-owl.jpg
...然后onerror()
永远不会开火。是这样的预期行为吗?有没有办法解决?
是的,我知道只做客户端验证并不是真正解决这个问题的最好方法,但是假装这是唯一的方法。
编辑:值得一提的是,我在运行于webpack-dev-server之上的Node.js / Webpack本地环境中看到了这个错误。也许这会成为某种权限问题。
答案 0 :(得分:0)
好吧,我是个白痴。我进行了上游检查,以验证入站URL是否采用有效格式。当我检查域名时,我这样做了:
http://happy.f/wp-content/uploads/2011/10/random-owl.jpg
拥有一个单一字符的顶级域名是不合法的,所以我的验证例程就抓住了。只要我放入一个有效格式但仍然虚假的顶级域名,就像这样:
http://happy.fasdfasdfasdfasdf/wp-content/uploads/2011/10/random-owl.jpg
我的onerror()
方法被解雇了。
因此... d'哦