Dans les applications Web modernes, le partage de ressources cross-origine (CORS) est devenu une fonctionnalité essentielle. Lorsque nous utilisons le framework Laravel pour développer des applications Web, nous rencontrons souvent des situations où un accès inter-domaines doit être réalisé. Cet article présentera comment utiliser le framework Laravel pour réaliser un partage de ressources entre domaines afin que nous puissions développer des applications Web plus flexibles et efficaces.
Qu'est-ce que le partage de ressources entre domaines ?
Dans le développement Web, le partage de ressources cross-origine (CORS) fait référence à l'utilisation des ressources d'un autre site Web dans les pages d'un site Web. Par exemple, un site Web (site Web A) utilise l'interface API d'un autre site Web (site Web B) pour obtenir des données, etc. En raison de la politique de même origine du navigateur, l'utilisation directe des ressources d'un autre site Web n'est pas autorisée. Dans ce cas, nous devons utiliser le partage de ressources entre domaines pour permettre aux données entre différents domaines d'interagir.
Comment Laravel implémente-t-il l'accès entre domaines ?
Le framework Laravel fournit de nombreux middlewares pratiques qui peuvent facilement obtenir un accès inter-domaines. Ci-dessous, nous présenterons deux méthodes de mise en œuvre.
La première méthode d'implémentation : utiliser le middleware CORS de Laravel
Vous devez d'abord introduire un package middleware CORS tiers. Nous pouvons utiliser le package laravel-cors. Les étapes spécifiques sont les suivantes :
composer require barryvdh/laravel-cors
Enregistrez le middleware dans le fichier appHttpKernel.php :
protected $middleware = [ // Other middlewares BarryvdhCorsHandleCors::class, ];
Ensuite, configurez les paramètres inter-domaines dans le fichier config/cors.php comme suit :
<?php return [ 'paths' => [ 'api/*', '/*' ], 'allowed_methods' => [ 'GET', 'POST', 'PUT', 'DELETE', 'OPTIONS', ], 'allowed_origins' => [ '*', ], 'allowed_origins_patterns' => [], 'allowed_headers' => [ 'Content-Type', 'X-Requested-With', 'Authorization', 'Accept', 'Origin', ], 'exposed_headers' => [], 'max_age' => 0, 'supports_credentials' => true, ];
Dans le code ci-dessus, l'attribut paths définit les chemins d'API qui doivent prendre en charge plusieurs domaines, l'attribut Allowed_methods définit les méthodes HTTP inter-domaines autorisées, l'attribut Allowed_origins définit les sources inter-domaines autorisées (* indique toutes les sources ), et l'attribut Allowed_headers définit les sources inter-domaines autorisées.
La deuxième méthode d'implémentation : utiliser le middleware de Laravel
C'est également un bon choix pour implémenter l'accès inter-domaines via un middleware Laravel personnalisé. De cette façon, nous devons écrire nous-mêmes un middleware Laravel pour gérer les demandes d'accès entre domaines. Voici un exemple d'implémentation de base :
Tout d'abord, nous devons créer un fichier CorsMiddleware.php dans le répertoire app/Http/Middleware. Le contenu du fichier est le suivant :
<?php namespace AppHttpMiddleware; use Closure; class CorsMiddleware { public function handle($request, Closure $next) { $response = $next($request); $response->header('Access-Control-Allow-Origin', '*') ->header('Access-Control-Allow-Methods', 'GET, POST, PUT, DELETE, OPTIONS') ->header('Access-Control-Allow-Headers', 'X-Requested-With, Content-Type, Authorization'); return $response; } }
Le. handle dans le code ci-dessus Les méthodes peuvent être exécutées sur chaque requête, permettant un accès inter-domaines en définissant des en-têtes de réponse.
Ensuite, nous devons enregistrer CorsMiddleware dans le framework Laravel pour une utilisation facile. Ajoutez le code suivant au fichier app/Http/Kernel.php :
protected $routeMiddleware = [ // Other middleware 'cors' => AppHttpMiddlewareCorsMiddleware::class, ];
CorsMiddleware::class dans le code ci-dessus est notre middleware CorsMiddleware personnalisé. Après vous être inscrit ici, vous pouvez l'utiliser dans le programme.
Dans les contrôleurs ou les routes qui doivent prendre en charge plusieurs domaines, utilisez le CorsMiddleware enregistré, par exemple :
Route::group(['middleware' => ['cors']], function () { // 这里可以添加跨域API });
Jusqu'à présent, nous avons implémenté avec succès Laravel de deux manières. accès dans le cadre. Dans le développement réel, nous pouvons choisir une méthode qui nous convient en fonction de besoins spécifiques pour obtenir un accès inter-domaines, rendant nos applications Web plus flexibles et efficaces.
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!