Dans les projets avec front-end et back-end séparés, des problèmes inter-domaines peuvent survenir lorsque le front-end demande l'interface back-end. Parmi eux, un scénario typique est le suivant : le projet frontal s'exécute sur http://localhost:8080 et le projet back-end s'exécute sur http://localhost:8000. Dans ce cas, les paramètres inter-domaines doivent être définis. ensemble.
Dans Laravel, vous pouvez utiliser les deux méthodes suivantes pour configurer plusieurs domaines.
Créez d'abord un middleware CorsMiddleware :
php artisan make:middleware CorsMiddleware
Gérez les domaines inter-domaines dans CorsMiddleware :
<?php namespace App\Http\Middleware; use Closure; class CorsMiddleware { public function handle($request, Closure $next) { $origin = $request->header('Origin') ?: '*'; header('Access-Control-Allow-Origin: ' . $origin); header('Access-Control-Allow-Headers: Origin, Content-Type, Authorization'); header('Access-Control-Allow-Methods: GET, POST, PUT, DELETE, OPTIONS'); return $next($request); } }
Le middleware sera enregistré dans le tableau $middleware dans Http/Kernel.php:
protected $middleware = [ // ... \App\Http\Middleware\CorsMiddleware::class, ];
À ce moment , Laravel ajoutera des informations liées à plusieurs domaines telles que Access-Control-Allow-Origin dans l'en-tête de réponse.
En fait, la communauté Laravel dispose déjà de nombreux packages d'extension open source qui peuvent être utilisés pour gérer les problèmes inter-domaines. Par exemple, laravel-cors fournit certains éléments de configuration pour configurer des requêtes inter-domaines.
Tout d'abord, installez le package d'extension :
composer require barryvdh/laravel-cors
Ensuite, enregistrez le fournisseur de services dans le tableau des fournisseurs dans config/app.php :
'providers' => [ // ... Barryvdh\Cors\ServiceProvider::class, ],
Enfin, publiez le fichier de configuration :
php artisan vendor:publish --provider="Barryvdh\Cors\ServiceProvider"
À ce stade, vous pouvez dans config /cors. Configurez les requêtes inter-domaines en php :
return [ /* |-------------------------------------------------------------------------- | Laravel CORS Options |-------------------------------------------------------------------------- | | The allowed_methods and allowed_headers options are case-insensitive. | */ 'allowed_origins' => ['*'], 'allowed_origins_patterns' => [], 'allowed_headers' => ['*'], 'allowed_methods' => ['*'], 'exposed_headers' => [], 'max_age' => 0, 'supports_credentials' => false, ];
Configurez simplement en fonction de vos besoins.
Vous trouverez ci-dessus deux méthodes pour configurer les paramètres inter-domaines dans Laravel. Choisissez simplement celle qui vous convient.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!