【问题标题】:Image src (via javascript) inconsistency between chrome/firefoxchrome / firefox之间的图像src(通过javascript)不一致
【发布时间】:2024-01-13 20:11:01
【问题描述】:

嘿,所以我遇到了一个奇怪的错误/边缘情况。查看以下代码:

var i = new Image();
i.src = 'http://ia.media-imdb.com/images/M/MV5BMTIxOTAxNTc4NF5BMl5BanBnXkFtZTcwOTg1NzQyMQ@@._V1._SX97_SY140_.jpg';
console.log(i.width);

这在 chrome 中工作正常(因为它指的是真实图像),但在 FF 中失败。认为这可能与“at”符号或双扩展名(例如“._V1._SX97_SY140_.jpg”)有关,但不知道。

感谢您的帮助。

【问题讨论】:

  • 萤火虫说什么? javascript 控制台中的任何错误?
  • 我敢打赌你只需要对路径进行 url 编码。
  • 不在控制台中,但奇怪的是,当我查看网络面板时,我得到了 403 返回。想法?
  • @Hogan 没试过。看起来是服务器拒绝问题...
  • @onassar - 直接在两个浏览器上尝试 URL 并跟踪嗅探网络流量以查看差异(如果有)。

标签: javascript image request frontend client-side


【解决方案1】:

请记住,图像是异步加载的。您需要为图像的加载事件分配一个事件处理程序并在那里获取宽度:

var i = new Image();
i.onload = function() {
  console.log(this.width);
}
i.src = 'http://ia.media-imdb.com/images/M/MV5BMTIxOTAxNTc4NF5BMl5BanBnXkFtZTcwOTg1NzQyMQ@@._V1._SX97_SY140_.jpg';

【讨论】:

  • 是的,忘了把它放在我的代码中,但这似乎无助于返回 403 的问题,因为 ff 中的请求中有额外的标头是 imdb 的服务器不喜欢的,那chrome 似乎没有发送。
  • @onassar:这可能是一个很好的细节,可以包含在问题本身中。
  • imdb 不喜欢的额外头文件有哪些?
【解决方案2】:

403 响应标头表示禁止 (wiki),即不允许您访问该资源。

imdb.com 这样做可能是为了防止他们的图片在其他网站上被盗链。

【讨论】:

    最近更新 更多