网站图片加载失败怎么办?先看控制台的错误码
用户发来截图,页面上一个裂开的小图标。
这种问题的麻烦在于,它可能出在六个完全不同的地方,而现象长得一模一样。
第一步永远是看状态码
打开浏览器开发者工具,Console 或者 Network 里会直接写清楚:
404 是找不到文件;403 是拒绝访问;200 但显示空白,多半是文件损坏或者格式不支持;还有一个特殊提示 Mixed Content,是混合内容被拦。
状态码一出来,范围就小了一半。
404:路径问题
大小写在 Linux 上是要区分的,Logo.PNG 和 logo.png 不是同一个文件。Windows 本地开发正常、传到服务器就裂图,基本都是这个。
还有一种:图片被上传到了别的目录,数据库里存的是绝对路径,换域名之后全错。
403:防盗链或权限
防盗链很好验证:填一个本站的 Referer 再测一次,能出图就是它。
权限问题看文件属主和权限位,Web 用户读不到就 403。
200 但空白
文件本身损坏,或者上传的时候被截断。重新传一份对比文件大小就知道了。
还有一种:CDN 缓存了一个错误响应,状态码是 200,内容是错误页。刷新缓存能解决,但下次可能再犯,要看回源配置。
Mixed Content
HTTPS 页面里引用 http:// 的图片,浏览器会直接拦掉,控制台报 Mixed Content。改协议或者用协议相对地址,改完清缓存再看。
格式兼容
auto 转 WebP 之后老浏览器打不开,这种一般有 fallback,但配置漏了就会裂图。看请求的 Accept 头和返回的 Content-Type 对不对。
怎么快速定位
拿图片 URL 直接测一次,GET 方式,看状态码和 Content-Type。如果 200 但类型不对,问题在服务端返回;如果 403,回到防盗链那一条。
网站测速 的高级选项支持 GET 和自定义 Referer,测图片刚好用得上。