Vérifier l’IP serveur et répartir les téléchargements dans Laravel

Auteur:Lisa Farrell·2026-06-01

Laravel peut utiliser la même interface IP de deux façons utiles : le backend vérifie l’IP sortante du serveur, tandis que la page de téléchargement appelle l’interface dans le navigateur pour répartir les visiteurs.

Objectif de conception

Pour « Vérifier l’IP serveur et répartir les téléchargements dans Laravel », la page doit rester utile avant la fin de la requête IP. Le résultat géographique n’est qu’un enrichissement : il est validé, limité à une décision précise et ignoré si les données sont incomplètes.

Flux de requête et de décision

Vérifier l’IP serveur et répartir les téléchargements dans Laravel: Le flux ci-dessous est propre à cette implémentation et ne reprend pas une liste générique de contrôle IP.

  1. Étape 1 — État par défaut: two explicit services
  2. Étape 2 — Requête: Http + Cache
  3. Étape 3 — Validation: allowlisted mirror map
  4. Étape 4 — Décision: temporarySignedRoute
  5. Étape 5 — Repli: mirror=global

Exemple orienté production

Vérifier l’IP serveur et répartir les téléchargements dans Laravel: L’exemple ajoute un délai maximal, la validation de la réponse, un repli déterministe et une gestion adaptée au cycle de vie du framework.

<?php
// config/downloads.php
return [
  'default' => 'global',
  'country_to_mirror' => ['JP'=>'asia', 'KR'=>'asia', 'DE'=>'eu', 'FR'=>'eu'],
  'mirrors' => [
    'global' => 'https://cdn.example.com/app.zip',
    'asia'   => 'https://asia.example.com/app.zip',
    'eu'     => 'https://eu.example.com/app.zip',
  ],
];

// app/Http/Controllers/DownloadResolverController.php
namespace App\Http\Controllers;

use Illuminate\Http\Request;
use Illuminate\Support\Facades\URL;

final class DownloadResolverController extends Controller
{
    public function __invoke(Request $request)
    {
        $country = strtoupper((string) $request->query('country', 'ZZ'));
        $key = config("downloads.country_to_mirror.$country", config('downloads.default'));
        abort_unless(array_key_exists($key, config('downloads.mirrors')), 500);

        return response()->json([
            'mirror' => $key,
            'url' => URL::temporarySignedRoute(
                'download.file', now()->addMinutes(10), ['mirror' => $key]
            ),
        ]);
    }
}

// routes/web.php
Route::get('/download/resolve', DownloadResolverController::class);
Route::get('/download/{mirror}', function (string $mirror) {
    abort_unless(request()->hasValidSignature(), 403);
    $url = config("downloads.mirrors.$mirror");
    abort_unless($url, 404);
    return redirect()->away($url);
})->name('download.file');

Matrice de tests

Avant de publier « Vérifier l’IP serveur et répartir les téléchargements dans Laravel », exécutez ces cas avec des réponses simulées ou une sortie VPN contrôlée.

ConditionEntrée / configurationRésultat attendu
T1country=JPmirror=asia; signed URL
T2country=ZZmirror=global
T3external URL inputserver map only
T4signature expiredHTTP 403

Test automatisé / smoke test

public function test_unknown_country_uses_global_mirror(): void
{
    $response = $this->getJson('/download/resolve?country=ZZ');
    $response->assertOk()->assertJsonPath('mirror', 'global');
    $this->assertStringContainsString('/download/global', $response->json('url'));
}

Gestion des échecs

Vérifier l’IP serveur et répartir les téléchargements dans Laravel: Une erreur doit être visible dans les journaux ou les outils de développement, sans laisser un bloc vide ni casser le paiement.

ÉchecCauseRéponse
HTTP 429geo rate limitmirror=global
mirror maintenanceconfig keyremove key
signature mismatchedited / expired403 + resolve again
web ≠ worker IPproxy routeruntime-by-runtime check

Cas pratique

Un usage réaliste de « Vérifier l’IP serveur et répartir les téléchargements dans Laravel » : un éditeur choisit le miroir public le plus proche pour le confort, puis génère l’URL de téléchargement signée finale sur le serveur Laravel.

Notes de mise en production

Vérifier l’IP serveur et répartir les téléchargements dans Laravel: Conservez un HTML par défaut complet. La localisation IP ne prouve pas l’identité et ne doit pas servir de contrôle d’autorisation côté client.

Conclusion

« Vérifier l’IP serveur et répartir les téléchargements dans Laravel » dispose désormais de son propre parcours d’implémentation, de tests concrets et d’un comportement de repli défini.