Maison  >  Article  >  développement back-end  >  Comment résoudre les problèmes inter-domaines dans le développement de Laravel

Comment résoudre les problèmes inter-domaines dans le développement de Laravel

不言
不言original
2018-06-13 14:08:491628parcourir

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(&#39;HTTP_ORIGIN&#39;) ? $request->server(&#39;HTTP_ORIGIN&#39;) : &#39;&#39;;
 $allow_origin = [
  &#39;http://localhost:8000&#39;,
 ];
 if (in_array($origin, $allow_origin)) {
  $response->header(&#39;Access-Control-Allow-Origin&#39;, $origin);
  $response->header(&#39;Access-Control-Allow-Headers&#39;, &#39;Origin, Content-Type, Cookie, X-CSRF-TOKEN, Accept, Authorization, X-XSRF-TOKEN&#39;);
  $response->header(&#39;Access-Control-Expose-Headers&#39;, &#39;Authorization, authenticated&#39;);
  $response->header(&#39;Access-Control-Allow-Methods&#39;, &#39;GET, POST, PATCH, PUT, OPTIONS&#39;);
  $response->header(&#39;Access-Control-Allow-Credentials&#39;, &#39;true&#39;);
 }
 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!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn