Maison >cadre php >Laravel >laravel implémente l'accès inter-domaines

laravel implémente l'accès inter-domaines

PHPz
PHPzoriginal
2023-05-26 17:32:072872parcourir

Dans les applications Web modernes, le partage de ressources cross-origine (CORS) est devenu une fonctionnalité essentielle. Lorsque nous utilisons le framework Laravel pour développer des applications Web, nous rencontrons souvent des situations où un accès inter-domaines doit être réalisé. Cet article présentera comment utiliser le framework Laravel pour réaliser un partage de ressources entre domaines afin que nous puissions développer des applications Web plus flexibles et efficaces.

Qu'est-ce que le partage de ressources entre domaines ?

Dans le développement Web, le partage de ressources cross-origine (CORS) fait référence à l'utilisation des ressources d'un autre site Web dans les pages d'un site Web. Par exemple, un site Web (site Web A) utilise l'interface API d'un autre site Web (site Web B) pour obtenir des données, etc. En raison de la politique de même origine du navigateur, l'utilisation directe des ressources d'un autre site Web n'est pas autorisée. Dans ce cas, nous devons utiliser le partage de ressources entre domaines pour permettre aux données entre différents domaines d'interagir.

Comment Laravel implémente-t-il l'accès entre domaines ?

Le framework Laravel fournit de nombreux middlewares pratiques qui peuvent facilement obtenir un accès inter-domaines. Ci-dessous, nous présenterons deux méthodes de mise en œuvre.

La première méthode d'implémentation : utiliser le middleware CORS de Laravel

Vous devez d'abord introduire un package middleware CORS tiers. Nous pouvons utiliser le package laravel-cors. Les étapes spécifiques sont les suivantes :

  1. Installer le package laravel-cors. package
composer require barryvdh/laravel-cors
  1. Enregistrez le middleware

Enregistrez le middleware dans le fichier appHttpKernel.php :

protected $middleware = [
    // Other middlewares
    BarryvdhCorsHandleCors::class,
];
  1. Configurez les paramètres CORS

Ensuite, configurez les paramètres inter-domaines dans le fichier config/cors.php comme suit :

<?php
return [
    'paths' => [
        'api/*',
        '/*'
    ],

    'allowed_methods' => [
        'GET',
        'POST',
        'PUT',
        'DELETE',
        'OPTIONS',
    ],

    'allowed_origins' => [
        '*',
    ],

    'allowed_origins_patterns' => [],

    'allowed_headers' => [
        'Content-Type',
        'X-Requested-With',
        'Authorization',
        'Accept',
        'Origin',
    ],

    'exposed_headers' => [],

    'max_age' => 0,

    'supports_credentials' => true,
];

Dans le code ci-dessus, l'attribut paths définit les chemins d'API qui doivent prendre en charge plusieurs domaines, l'attribut Allowed_methods définit les méthodes HTTP inter-domaines autorisées, l'attribut Allowed_origins définit les sources inter-domaines autorisées (* indique toutes les sources ), et l'attribut Allowed_headers définit les sources inter-domaines autorisées.

La deuxième méthode d'implémentation : utiliser le middleware de Laravel

C'est également un bon choix pour implémenter l'accès inter-domaines via un middleware Laravel personnalisé. De cette façon, nous devons écrire nous-mêmes un middleware Laravel pour gérer les demandes d'accès entre domaines. Voici un exemple d'implémentation de base :

  1. Créer un middleware inter-domaines

Tout d'abord, nous devons créer un fichier CorsMiddleware.php dans le répertoire app/Http/Middleware. Le contenu du fichier est le suivant :

<?php
namespace AppHttpMiddleware;

use Closure;

class CorsMiddleware
{
    public function handle($request, Closure $next)
    {
        $response = $next($request);

        $response->header('Access-Control-Allow-Origin', '*')
                 ->header('Access-Control-Allow-Methods', 'GET, POST, PUT, DELETE, OPTIONS')
                 ->header('Access-Control-Allow-Headers', 'X-Requested-With, Content-Type, Authorization');

        return $response;
    }
}

Le. handle dans le code ci-dessus Les méthodes peuvent être exécutées sur chaque requête, permettant un accès inter-domaines en définissant des en-têtes de réponse.

  1. Enregistrer le middleware inter-domaines

Ensuite, nous devons enregistrer CorsMiddleware dans le framework Laravel pour une utilisation facile. Ajoutez le code suivant au fichier app/Http/Kernel.php :

protected $routeMiddleware = [
    // Other middleware
    'cors' => AppHttpMiddlewareCorsMiddleware::class,
];

CorsMiddleware::class dans le code ci-dessus est notre middleware CorsMiddleware personnalisé. Après vous être inscrit ici, vous pouvez l'utiliser dans le programme.

  1. Utilisez un middleware inter-domaines

Dans les contrôleurs ou les routes qui doivent prendre en charge plusieurs domaines, utilisez le CorsMiddleware enregistré, par exemple :

Route::group(['middleware' => ['cors']], function () {
    // 这里可以添加跨域API
});

Jusqu'à présent, nous avons implémenté avec succès Laravel de deux manières. accès dans le cadre. Dans le développement réel, nous pouvons choisir une méthode qui nous convient en fonction de besoins spécifiques pour obtenir un accès inter-domaines, rendant nos applications Web plus flexibles et efficaces.

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