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

不言
Libérer: 2023-03-31 22:36:02
original
1679 Les gens l'ont consulté

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
Copier après la connexion

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;
 }
}
Copier après la connexion

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,
 ];
Copier après la connexion

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!

Étiquettes associées:
source:php.cn
Déclaration de ce site Web
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
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal