---
title: "Fasáda SafeFetch — Safe Fetch for Laravel | Roundly"
description: "Prehľad fasády SafeFetch — vet, allows, precheck, guard, http, fetch, download, truncated, policy, networks, urls — a makra Http::safe()."
url: https://roundly-consulting.com/sk/open-source/navody/safe-fetch-for-laravel/fasada
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)

# Fasáda SafeFetch

Všetko ide cez jednu fasádu, RoundlyConsulting\\SafeFetch\\Facades\\SafeFetch (globálny alias SafeFetch), ktorá je skratkou nad singletonom SafeFetchManager, a cez makro Http::safe() na HTTP klientovi Laravelu:

```php
use Illuminate\Support\Facades\Http;
use RoundlyConsulting\SafeFetch\Facades\SafeFetch;

Http::safe()->withToken($token)->post($url, $payload);          // guard any Laravel request
SafeFetch::guard(Http::withToken($token), $policy)->post($url);  // the same, without the macro
SafeFetch::http($policy)->get($url);                             // a new guarded request

$vetted = SafeFetch::vet($url);              // VettedDestination, or DestinationRejected / DestinationUnavailable
SafeFetch::allows($url);                     // bool — never throws a verdict
SafeFetch::precheck($url);                   // CanonicalUrl — every rule except the DNS lookup

$page = SafeFetch::fetch($url, maxBytes: 1_000_000);              // a capped GET into memory
$file = SafeFetch::download($url, $path, maxBytes: 50_000_000);   // the same GET, streamed to a file
SafeFetch::truncated($response);             // was a guarded response cut at maxResponseBytes?

SafeFetch::policy();                         // the configured DestinationPolicy, to tighten or loosen per call
SafeFetch::networks()->isPrivate('169.254.169.254');                    // true — cloud metadata
SafeFetch::urls()->canonicalise('HTTPS://Example.COM.:443/a?b#frag');   // CanonicalUrl: https://example.com/a?b
```

## Metódy manažéra

| Metóda | Vracia | Čo robí |
| --- | --- | --- |
| `vet(string $url, ?DestinationPolicy $policy = null)` | `VettedDestination` | Posúdi URL adresu podľa pravidiel (predvolene nakonfigurovaných): jej prestavanú URL a každú adresu, na ktorú sa preložila. Vyhodí DestinationRejected, alebo DestinationUnavailable, ak sa hostiteľ nepreloží. |
| `allows(string $url, ?DestinationPolicy $policy = null)` | `bool` | Či pravidlá URL adresu pustia. Verdikt nikdy nevyhodí ako výnimku. |
| `precheck(string $url, ?DestinationPolicy $policy = null)` | `CanonicalUrl` | Všetky pravidlá okrem prekladu DNS — pri ukladaní a vo formulároch. Vyhodí DestinationRejected. |
| `http(?DestinationPolicy $policy = null)` | `PendingRequest` | Nová chránená požiadavka z továrne HTTP klienta Laravelu — Http::safe() bez makra. |
| `guard(PendingRequest $request, ?DestinationPolicy $policy = null)` | `PendingRequest` | Ochráni požiadavku, ktorú ste zostavili (Http::withToken($t)) — overenú, pripnutú a skontrolovanú pri každom kroku. To, čo volá Http::safe(). |
| `fetch(string $url, ?int $maxBytes = null, ?int $timeout = null, ?string $accept = null, array $headers = [], ?bool $followRedirects = null, ?DestinationPolicy $policy = null)` | `FetchedResponse` | Chránený GET do pamäte s obmedzeným telom. Vyhodí DestinationRejected, DestinationUnavailable alebo FetchFailed. |
| `download(string $url, string $path, ?int $maxBytes = null, ?int $timeout = null, ?string $accept = null, array $headers = [], ?bool $followRedirects = null, ?DestinationPolicy $policy = null)` | `DownloadedFile` | Ten istý GET streamovaný do súboru na $path; adresár musí existovať. |
| `truncated(Response\|ResponseInterface $response)` | `bool` | Či bola chránená odpoveď orezaná na maxResponseBytes z pravidiel. Bez stavu: číta hlavičku Safe-Fetch-Truncated. |
| `policy()` | `DestinationPolicy` | Predvolené nakonfigurované pravidlá, ktoré sprísnite alebo uvoľníte pre jedno volanie. |
| `networks()` | `Handles\Networks` | Tabuľka blokovaných sietí: isPrivate(), isBlockedHostname(), blockedRanges(). |
| `urls()` | `Handles\Urls` | Parser URL adries a riešenie presmerovaní, ktoré používa ochrana: canonicalise(), resolveRedirect(). |
| `SafeFetch::fake(array $dns = [])` | `Testing\SafeFetchFake` | Len na fasáde — nahrávací fake (pozrite Testovanie). |
| `SafeFetch::fakeDns(array $records = [])` | `Testing\FakeHostResolver` | Len na fasáde — odpovedá na preklady mien z tabuľky. |

Po nainštalovaní SafeFetch::fake() sa dá každé overenie fake volať aj na fasáde — pozrite Testovanie. vetHop() je na manažéri verejná, ale interná: je to volanie middleware ochrany pre každý krok, aby fake videl všetky kroky. SafeFetchManager::TRUNCATED\_HEADER ('Safe-Fetch-Truncated') pomenúva hlavičku orezania.

## Makro Http::safe()

PendingRequest::safe(?DestinationPolicy $policy = null): PendingRequest poskytuje Http::safe(), Http::withToken($t)->safe() aj $pool->safe(). Ak by iný balík zaregistroval makro safe po tomto, potichu by ho nahradil, preto bezpečnostne kritický kód volá SafeFetch::guard() alebo SafeFetch::http().

## Dátové objekty

V RoundlyConsulting\\SafeFetch\\DataTransferObjects, všetky final readonly:

| Trieda | Polia a metódy |
| --- | --- |
| `DestinationPolicy` | Pravidlá nad tabuľkou blokovaných sietí — pozrite Pravidlá cieľov. |
| `RedirectPolicy` | enabled, max, statuses, allowDowngrade, forwardHeaders, statusesGiven; none(), methodPreserving(), enabled(), withStatuses(), forwardHeaders(), allowingDowngrade(), max(), follows(). |
| `CanonicalUrl` | scheme, host, port, ipLiteral, pathAndQuery; toString(), origin(). |
| `VettedDestination` | url (prestavaná), scheme, host, port, ipLiteral, addresses (každá overená adresa); origin(), resolveEntry(): ?string, pinningOptions(): array (bez curl cannot\_pin), connectsTo(string $address): bool. |
| `FetchOptions` | maxBytes, timeout, accept, headers, followRedirects — null znamená nakonfigurovanú predvolenú hodnotu. |
| `FetchedResponse` | status, body, contentType, url, headers; header(string $name): ?string, json(?string $key = null, mixed $default = null): mixed. |
| `DownloadedFile` | status, path, bytes, contentType, url, headers; header(string $name): ?string. |

Ďalšie verejné typy: Enums\\Reason a výnimky (Verdikty a výnimky), Contracts\\HostResolver a Support\\SystemHostResolver, Support\\PrivateNetworks (URL adresy a blokované siete), Rules\\SafeUrl, Commands\\CheckCommand, Events\\DestinationRefused a Testing\\SafeFetchFake, Testing\\FakeHostResolver a Testing\\RecordedVet. Všetko ostatné v Support\\ a Http\\ je interné.

## 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)
