Maison > cadre php > Laravel > le corps du texte

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

PHPz
Libérer: 2023-05-26 17:32:07
original
2790 Les gens l'ont consulté

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
Copier après la connexion
  1. Enregistrez le middleware

Enregistrez le middleware dans le fichier appHttpKernel.php :

protected $middleware = [
    // Other middlewares
    BarryvdhCorsHandleCors::class,
];
Copier après la connexion
  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,
];
Copier après la connexion

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

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

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

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!

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
À propos de nous Clause de non-responsabilité Sitemap
Site Web PHP chinois:Formation PHP en ligne sur le bien-être public,Aidez les apprenants PHP à grandir rapidement!