Lorsque vous utilisez Laravel pour créer des applications Web, pour des raisons de sécurité, le navigateur interdit par défaut les requêtes inter-domaines entre différents domaines, ce qui peut empêcher certaines fonctions de fonctionner correctement. Cet article explique comment désactiver les restrictions sur les requêtes d'origine croisée dans une application Laravel.
La requête d'origine croisée est une technologie qui lance des requêtes inter-domaines dans le navigateur, par exemple en lançant une requête à une API exécutée sur localhost:8080 à partir d'une application exécutée sur localhost:8000.
Laravel a par défaut des restrictions assez strictes sur les requêtes inter-domaines afin d'empêcher les attaques de falsification de requêtes inter-sites. Par conséquent, si votre application doit prendre en charge les requêtes inter-domaines, vous devez prendre certaines mesures pour désactiver les restrictions de requêtes inter-domaines de Laravel.
Voici quelques méthodes que vous pouvez utiliser pour désactiver les restrictions sur les requêtes inter-domaines dans votre application Laravel :
Vous pouvez utiliser un proxy pour transférer les requêtes inter-domaines. Dans ce cas, la demande sera envoyée à un serveur qui se trouve dans le même domaine que l'application Web et n'a aucune restriction de demande entre domaines. Les applications Laravel s'attendront toujours à ce que les requêtes proviennent du serveur local, alors ne vous inquiétez pas du rendu de l'interface.
Il est possible d'écrire un middleware pour activer les requêtes inter-domaines. Ce middleware définira les en-têtes requis pour permettre de répondre aux requêtes d'origine croisée. Voici un exemple de code pour ajouter un middleware dans votre application Laravel :
<?php namespace App\Http\Middleware; use Closure; class CorsMiddleware { public function handle($request, Closure $next) { $headers = [ 'Access-Control-Allow-Origin' => '*', 'Access-Control-Allow-Methods' => 'POST, GET, OPTIONS, PUT, DELETE', 'Access-Control-Allow-Headers' => 'Content-Type, X-Auth-Token, Origin', ]; if ($request->getMethod() == "OPTIONS") { return response()->json('{"method":"OPTIONS"}', 200, $headers); } $response = $next($request); foreach ($headers as $key => $value) { $response->header($key, $value); } return $response; } }
Dans votre application, vous pouvez ajouter ce middleware aux routes sur lesquelles vous souhaitez désactiver les restrictions de requêtes inter-domaines, ou l'ajouter au groupe global de middleware.
Laravel fournit un moyen intégré de gérer les requêtes inter-domaines. La fonctionnalité de requête inter-domaine de Laravel peut être utilisée dans une route ou un contrôleur, par exemple :
<?php namespace App\Http\Controllers; use Illuminate\Http\Request; use Illuminate\Http\Response; class ApiController extends Controller { public function index(Request $request) { $data = [ 'name' => 'John Doe', 'email' => 'johndoe@example.com', ]; $response = new Response($data); $response->header('Access-Control-Allow-Origin', '*'); $response->header('Access-Control-Allow-Methods', 'POST, GET, OPTIONS, PUT, DELETE'); $response->header('Access-Control-Allow-Headers', 'Content-Type, X-Auth-Token, Origin'); return $response; } }
Le code ci-dessus définit l'en-tête de réponse pour autoriser les requêtes inter-domaines de toutes origines.
Résumé :
Cet article présente trois méthodes pour désactiver les restrictions de requêtes inter-domaines dans les applications Laravel. L'utilisation d'un proxy est probablement le moyen le plus simple de procéder, mais vous pouvez utiliser un middleware ou les fonctionnalités intégrées de Laravel pour avoir un contrôle plus précis sur les requêtes d'origine croisée. En fonction des besoins de votre application, vous pouvez choisir la politique qui vous convient le mieux pour désactiver les restrictions sur les requêtes cross-origin.
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!