All packages
Safe Fetch for Laravel
Requirements
- PHP 8.4 or newer — CI tests 8.4, 8.5 and 8.6
- Laravel 13 — illuminate/console, contracts, http, support, translation and validation ^13.0
- ext-curl to send guarded requests (suggested, not required) — DNS pinning uses CURLOPT_RESOLVE. Without it vet(), allows(), networks(), urls(), the SafeUrl rule and safe-fetch:check {url} still work, while Http::safe(), guard(), http(), fetch(), download() and pinningOptions() refuse with cannot_pin (fail closed)
- ext-intl for international (IDN) host names (suggested) — without it they are refused as non_canonical_host
- libcurl 7.61.0 or newer, which PHP 8.4 already requires; the pre-send address check needs libcurl 7.80+ — on older libcurl the connected address is checked after the request only
- Guzzle as Laravel 13 allows it — guzzlehttp/guzzle ^7.8.2 || ^8.0
- The Roundly packages it builds on, installed by Composer: enums-for-laravel and package-toolkit-for-laravel (^2.0)
- No database, no migrations, no queue or scheduler
Show your open-source love
This package is free and MIT-licensed. If it saves you time, a one-off donation or a Patreon membership keeps it maintained, tested and documented.
More ways to support, including cryptoBy donating, you agree to our donation terms.
Want this built into your product?
We integrate our packages into custom Laravel and AI builds. Tell us what you're working on and we'll reply within 48 hours.