---
title: "Konfigurácia — Safe Fetch for Laravel | Roundly"
description: "Každý kľúč config/safe-fetch.php — http, porty, zoznamy hostiteľov a rozsahov, blokovanie hostiteľov aplikácie, presmerovania, limity fetch, resolver."
url: https://roundly-consulting.com/sk/open-source/navody/safe-fetch-for-laravel/konfiguracia
language: sk
---

[Všetky balíky](https://roundly-consulting.com/sk/open-source.md)

[Safe Fetch for Laravel](https://roundly-consulting.com/sk/open-source/navody/safe-fetch-for-laravel.md)

# Konfigurácia

config/safe-fetch.php sú predvolené pravidlá pre Http::safe(), SafeFetch::vet(), SafeFetch::fetch() a pravidlo safe\_url. Tabuľka blokovaných sietí platí vždy; tieto nastavenia k nej len pridávajú alebo z nej vynímajú. Publikujete ju cez --tag=safe-fetch-config:

```php
use RoundlyConsulting\SafeFetch\Support\SystemHostResolver;

return [

    // http too (local development, internal tools). https only by default.
    'allow_http' => env('SAFE_FETCH_ALLOW_HTTP', false),

    // null => any port 1–65535; otherwise the only ports a URL may use, e.g. [443].
    'ports' => null,

    'hosts' => [
        // Non-empty => ONLY these hosts (exact or *.example.com). Still resolved,
        // judged and pinned: an allowed host never makes a private address OK.
        'allowed' => [],

        // Refused by name, before any lookup.
        'blocked' => [],

        // Names whose addresses may be private (e.g. minio.internal). Still
        // resolved and pinned.
        'private' => [],
    ],

    'ranges' => [
        // Addresses / CIDRs exempt from the blocked-network table, e.g.
        // ['127.0.0.1/32', '10.20.0.0/16']. 0.0.0.0/0 and ::/0 are refused.
        'allowed' => [],

        // Extra addresses / CIDRs always refused; they beat every allow.
        'blocked' => [],
    ],

    // The app's own host names (app.url's host + extra) are refused by name, and
    // app.url's address when it is written as one: a request to yourself through
    // a public load balancer is SSRF too.
    'app_hosts' => [
        'block' => true,
        'extra' => [],
    ],

    'redirects' => [
        // Off by default: a redirect is returned to the caller unfollowed.
        'enabled' => env('SAFE_FETCH_REDIRECTS', false),

        // Hops followed at most, 0–10.
        'max' => env('SAFE_FETCH_MAX_REDIRECTS', 3),

        // null => 307 and 308 (method and body kept); SafeFetch::fetch(), which
        // only sends GETs, follows 301, 302, 303, 307 and 308 then. Otherwise a
        // subset of those five.
        'statuses' => null,

        // https -> http.
        'allow_downgrade' => false,

        // Header names also sent to another origin a redirect leads to
        // (Accept, Content-Type, User-Agent and the like always are).
        'forward_headers' => [],
    ],

    'fetch' => [
        // SafeFetch::fetch() body cap in bytes, at least 1.
        'max_bytes' => env('SAFE_FETCH_MAX_BYTES', 5_242_880),

        // SafeFetch::fetch() time budget in seconds, 1–600, every hop included.
        'timeout' => env('SAFE_FETCH_TIMEOUT', 30),
    ],

    // The resolver behind every lookup: any class implementing
    // RoundlyConsulting\SafeFetch\Contracts\HostResolver.
    'resolver' => SystemHostResolver::class,

];
```

## Všetky kľúče

| Kľúč | Env | Predvolené | Účel |
| --- | --- | --- | --- |
| `allow_http` | `SAFE_FETCH_ALLOW_HTTP` | false | Okrem https aj http. |
| `ports` | — | null | null pre ľubovoľný port, alebo neprázdny zoznam 1–65535 — jediné porty, ktoré URL adresa smie použiť. |
| `hosts.allowed` | — | \[\] | Vzory hostiteľov; neprázdny zoznam znamená len tieto hostiteľov. Aj tak sa preložia, posúdia a pripnú. |
| `hosts.blocked` | — | \[\] | Vzory hostiteľov odmietnuté podľa mena, ešte pred prekladom. |
| `hosts.private` | — | \[\] | Vzory hostiteľov, ktorých adresy smú byť privátne (minio.internal) — nikdy nie cloudová metadátová adresa. |
| `ranges.allowed` | — | \[\] | Adresy alebo CIDR vyňaté z tabuľky blokovaných sietí; nikdy 0.0.0.0/0, ::/0 ani IPv6 prefix, ktorý nesie celé IPv4. |
| `ranges.blocked` | — | \[\] | Adresy alebo CIDR vždy odmietnuté; majú prednosť pred každým povolením. |
| `app_hosts.block` | — | true | Odmietne vlastné mená hostiteľov aplikácie a adresu z app.url, ak je zapísaná ako adresa. |
| `app_hosts.extra` | — | \[\] | Vzory hostiteľov, ktoré tiež znamenajú aplikáciu — hostiteľ z app.url vždy. |
| `redirects.enabled` | `SAFE_FETCH_REDIRECTS` | false | Sledovať presmerovania; vypnuté vráti presmerovanie volajúcemu bez sledovania. |
| `redirects.max` | `SAFE_FETCH_MAX_REDIRECTS` | 3 | Najviac sledovaných krokov, 0–10. |
| `redirects.statuses` | — | null | null: 307 a 308 (pre fetch() a download() všetkých päť); inak podmnožina 301, 302, 303, 307, 308. |
| `redirects.allow_downgrade` | — | false | Povoliť https → http. |
| `redirects.forward_headers` | — | \[\] | Názvy hlavičiek, ktoré sa pošlú aj na iný origin, kam vedie presmerovanie. |
| `fetch.max_bytes` | `SAFE_FETCH_MAX_BYTES` | 5242880 | Aspoň 1 — limit tela pre fetch() a download(). |
| `fetch.timeout` | `SAFE_FETCH_TIMEOUT` | 30 | 1–600 sekúnd — časový rozpočet fetch() a download(), vrátane všetkých krokov. |
| `resolver` | — | SystemHostResolver::class | Ľubovoľná inštancovateľná trieda implementujúca Contracts\\HostResolver; čokoľvek iné vyhodí výnimku pri vytvorení. |

## Prísne čítanie

- Každý kľúč sa číta prísne: nesprávny typ alebo hodnota mimo rozsahu vyhodí InvalidConfigurationException s názvom kľúča, namiesto tichého návratu k voľnejšiemu nastaveniu.
- Prázdna hodnota (KEY= v prostredí) znamená nenastavené a použije sa predvolená hodnota.
- Logické hodnoty v env prijímajú true/false, 1/0, on/off a yes/no. Zoznamy prijímajú pole alebo zoznam oddelený čiarkami v env.
- Nastavenia, ktoré by ochranu úplne vypli, sa odmietnu — 0.0.0.0/0 a ::/0 v ranges.allowed alebo IPv6 prefix, ktorý nesie celé IPv4 (::ffff:0:0/96, 2002::/16).
- Globálny vypínač neexistuje. Kód, ktorý ho potrebuje, si ponechá vlastné nastavenie a ochranu jednoducho nezavolá.

## Premenné prostredia

```bash
SAFE_FETCH_ALLOW_HTTP=false
SAFE_FETCH_REDIRECTS=false
SAFE_FETCH_MAX_REDIRECTS=3
SAFE_FETCH_MAX_BYTES=5242880
SAFE_FETCH_TIMEOUT=30
```

## Vlastní hostitelia aplikácie

Hostiteľ z app.url sa vždy počíta ako aplikácia — bez schémy sa číta ako https (myapp.example, myapp.example:8080). Ak je app.url zapísaná ako adresa (https://52.10.20.30), odmietne sa ako app\_host tiež, v akomkoľvek zápise. Iné verejné meno pre tú istú IP adresu sa nerozpozná: uveďte ho v app\_hosts.extra.

## Preklady

resources/lang/{en,sk}/messages.php obsahuje jeden riadok pre každý dôvod (status preberá :status) a validation.php správu pre safe\_url (s :attribute). Ak ich chcete preformulovať, publikujte ich cez --tag=safe-fetch-translations.

## Prejavte lásku k open source

Tento balík je zadarmo pod licenciou MIT. Ak vám šetrí čas, jednorazový príspevok alebo členstvo na Patreone nám pomôže ho ďalej udržiavať, testovať a dokumentovať.

[Ďalšie spôsoby podpory vrátane kryptomien](https://roundly-consulting.com/sk/podporte-nas.md)

Odoslaním daru súhlasíte s našimi [podmienkami prijímania darov](https://roundly-consulting.com/sk/podmienky-darov.md).

[Podporte našu open-source prácu (otvorí sa v novej karte)](https://donate.stripe.com/dRmeVe8FX5PF1Qd9pXcEw00) [Pridajte sa k nám na Patreone (otvorí sa v novej karte)](https://www.patreon.com/cw/roundly)

## Chcete to zabudovať do svojho produktu?

Naše balíky integrujeme do zákazkových Laravel a AI riešení. Napíšte nám, na čom pracujete, a ozveme sa do 48 hodín.

[Ponuka do 48 hodín](https://roundly-consulting.com/sk/kontakt.md) [Prezrieť všetky balíky](https://roundly-consulting.com/sk/open-source/navody/safe-fetch-for-laravel.md)
