| Status | When |
|---|
200 | Image served — from a local disk as a file response, from a remote disk as a stream |
302 | Remote disk with remote_redirect = true — redirect to temporaryUrl() |
403 | route.signed = true and the signature is missing or invalid |
404 | Validation failed; unknown preset; source not found, not downloadable, too large or too many pixels; Glide failed to read or encode; integrity or decode check rejected the result; SVG sanitizer rejected the file |
429 | Throttle limit (route.middleware) exceeded |
503 | Another process holds the generation lock for this file for more than 15 seconds |
| Header | Value |
|---|
Content-Type | image/webp, image/avif, image/jpeg, image/png, image/gif, image/svg+xml; anything else application/octet-stream |
Cache-Control | Generated by this request (raster): no-store. Otherwise: public, max-age=<cache_max_age>, s-maxage=<cache_max_age>, immutable |
ETag | "<mtime base36>-<size base36>" |
Last-Modified | File mtime |
Content-Disposition | inline |
X-Content-Type-Options | nosniff |
Content-Length | Streamed responses from a remote disk |
Content-Security-Policy | SVG: default-src 'none'; style-src 'unsafe-inline'; sandbox |
The 302 redirect carries Laravel’s default headers, not the ones above.
| Source | File |
|---|
| Raster | <path>/md5(json_encode(sorted query without _t)).<ext> |
| SVG (passthrough) | <path>/md5(src).svg |
<ext> is the output format; jpeg and pjpg are stored as jpg.