Récemment, j'ai rencontré des besoins inter-domaines pendant le développement. J'ai trouvé des solutions pertinentes en recherchant des informations pertinentes. Par conséquent, l'article suivant vous présente principalement les solutions inter-domaines dans le développement de Laravel. L'article utilise un exemple de code. L'introduction est très. détaillé. Les amis qui en ont besoin peuvent s'y référer.
Avant-propos
Comme nous le savons tous, lorsque nous utilisons tous Laravel pour le développement, surtout lorsque le front-end et le back-end sont complètement séparé, puisque le projet frontal s'exécute sur le port désigné de votre propre machine (il peut également s'agir de la machine de quelqu'un d'autre), tel que localhost:8000, et que le programme laravel s'exécute sur un autre port, il est donc inter-domaine. , en raison de la politique de même origine du navigateur, les requêtes inter-domaines sont illégales. En fait, ce problème est facile à résoudre, il suffit d’ajouter un middleware. Pas grand chose à dire ci-dessous, suivons l'éditeur pour voir les solutions détaillées.
Solution :
1. Créer un nouveau middleware
php artisan make:middleware EnableCrossRequestMiddleware
2. Écrivez le contenu du middleware
<?php namespace App\Http\Middleware; use Closure; class EnableCrossRequestMiddleware { /** * Handle an incoming request. * * @param \Illuminate\Http\Request $request * @param \Closure $next * @return mixed */ public function handle($request, Closure $next) { $response = $next($request); $origin = $request->server('HTTP_ORIGIN') ? $request->server('HTTP_ORIGIN') : ''; $allow_origin = [ 'http://localhost:8000', ]; if (in_array($origin, $allow_origin)) { $response->header('Access-Control-Allow-Origin', $origin); $response->header('Access-Control-Allow-Headers', 'Origin, Content-Type, Cookie, X-CSRF-TOKEN, Accept, Authorization, X-XSRF-TOKEN'); $response->header('Access-Control-Expose-Headers', 'Authorization, authenticated'); $response->header('Access-Control-Allow-Methods', 'GET, POST, PATCH, PUT, OPTIONS'); $response->header('Access-Control-Allow-Credentials', 'true'); } return $response; } }
La variable de tableau $allow_origin est la liste des domaines inter-domaines que vous autorisez. .Peut être modifié par vous-même.
3. Enregistrez ensuite le middleware dans le fichier du noyau
protected $middleware = [ // more App\Http\Middleware\EnableCrossRequestMiddleware::class, ];
dans l'attribut $middleware du Classe AppHttpKernel Ajoutée, le middleware enregistré ici appartient au middleware global.
Ensuite, vous constaterez que la page frontale peut déjà envoyer des requêtes inter-domaines.
Il est normal qu'il y ait une requête supplémentaire avec la méthode définie sur les options, car le navigateur doit d'abord déterminer si le serveur autorise la requête inter-domaines.
Ce qui précède représente l'intégralité du contenu de cet article. J'espère qu'il sera utile à l'étude de chacun. Pour plus de contenu connexe, veuillez faire attention au site Web PHP chinois !
Recommandations associées :
À propos de Laravel recevant une analyse de données de l'ajax frontal
Comment implémenter le superviseur dans le framework Laravel en PHP Exécuter un processus asynchrone
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!