Maison >cadre php >Laravel >Comment configurer correctement plusieurs domaines dans Laravel

Comment configurer correctement plusieurs domaines dans Laravel

PHPz
PHPzoriginal
2023-04-13 10:07:152515parcourir

Laravel est un framework d'application Web PHP populaire qui offre de nombreuses fonctionnalités puissantes, notamment le routage, le middleware, l'ORM, etc. Cependant, lorsque nous construisons des applications Web avec Laravel, il est très courant de rencontrer des problèmes inter-domaines. L'interdomaine est généralement dû à la politique de même origine du navigateur, qui restreint l'accès aux ressources de différents noms de domaine. Par conséquent, lorsque nous faisons une demande vers un domaine différent, nous devons configurer plusieurs domaines.

Ci-dessous, nous expliquerons comment configurer correctement le cross-domain dans Laravel.

1. Installez le middleware "Barryvdh-cors"

Le progiciel tiers "Barryvdh-cors" lié à Laravel peut aider les développeurs à résoudre des problèmes inter-domaines. Développé par un Néerlandais nommé "Barry vd. Heuvel", ce middleware permet à Laravel d'effectuer la configuration CORS (Cross-Origin Resource Sharing) côté serveur.

Pour utiliser ce middleware, nous devons d'abord l'installer. Exécutez la commande suivante :

composer require barryvdh/laravel-cors

Après avoir installé le middleware, nous devons l'enregistrer auprès de l'application. Ouvrez le fichier config/app.php et ajoutez le code suivant dans le tableau des fournisseurs :

'providers' => [
    // ...
    Barryvdh\Cors\ServiceProvider::class,
];

Ajoutez ensuite le code suivant dans le tableau des alias :

'aliases' => [
    // ...
    'Cors' => Barryvdh\Cors\Facade::class,
];

2. Configurez le middleware

Après avoir enregistré le middleware, nous devons l'ajouter. à l'application Configurez-le dans . Ouvrez le fichier config/cors.php, il peut être généré automatiquement, sinon veuillez créer le fichier manuellement.

Dans le fichier, vous pouvez configurer des noms de domaine qui autorisent l'accès entre domaines et des méthodes de requête HTTP qui permettent le partage via AJAX, etc. Voici un exemple de configuration :

return [
    'supports_credentials' => false,
    'allowed_origins' => ['*'],
    'allowed_headers' => ['Content-Type', 'Authorization'],
    'allowed_methods' => ['GET', 'POST', 'PUT', 'PATCH', 'DELETE', 'OPTIONS'],
    'exposed_headers' => [],
    'max_age' => 0,
];

Dans cet exemple, nous autoriserons l'accès cross-origin depuis toutes les origines, mais uniquement des méthodes de requête et des en-têtes de requête spécifiques. Si vous avez besoin de personnaliser plus d'options, veuillez consulter [ce document](https://github.com/barryvdh/laravel-cors).

3. Utiliser le middleware dans les routes ou les contrôleurs

Lorsque nous avons installé et configuré le middleware "Barryvdh-cors", nous pouvons l'utiliser dans les routes ou les contrôleurs.

Utilisé dans le routage :

Route::get('/data', function () {
    return ['message' => 'Hello World'];
})->middleware('cors'); // Use cors middleware

Utilisé dans le contrôleur :

namespace App\Http\Controllers;

use Illuminate\Http\Request;
use App\Http\Controllers\Controller;
use Barryvdh\Cors\HandleCors;

class ExampleController extends Controller
{
    /**
     * Use Cors middleware to handle the request
    */
    public function index(Request $request)
    {
        $middleware = new HandleCors();
        $response = $middleware->handle($request, function($request) {
            return ['message' => 'Hello World'];
        });
        return $response;
    }
}

4 Conclusion

Avec le middleware "Barryvdh-cors", nous pouvons facilement résoudre les problèmes inter-domaines dans les applications Laravel. Ce middleware prend non seulement en charge le routage et les contrôleurs, mais prend également en charge la configuration globale et la configuration de groupe, etc., afin que nous puissions contrôler plus librement et plus précisément les politiques inter-domaines.

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