用户发来截图,页面上一个裂开的小图标。

这种问题的麻烦在于,它可能出在六个完全不同的地方,而现象长得一模一样。

第一步永远是看状态码

打开浏览器开发者工具,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,测图片刚好用得上。