Maison > cadre php > Laravel > Comment utiliser un middleware pour implémenter le partage de ressources cross-origin (CORS) dans Laravel

Comment utiliser un middleware pour implémenter le partage de ressources cross-origin (CORS) dans Laravel

WBOY
Libérer: 2023-11-02 13:57:28
original
1506 Les gens l'ont consulté

Comment utiliser un middleware pour implémenter le partage de ressources cross-origin (CORS) dans Laravel

Comment utiliser le middleware pour implémenter le partage de ressources Cross-Origin (CORS) dans Laravel

Présentation :

Le partage de ressources Cross-Origin (CORS) est un mécanisme de navigateur utilisé pour permettre aux applications Web de s'exécuter sur différents noms de domaine. Partager ressources ci-dessous. Laravel, un framework PHP populaire, fournit un moyen pratique de gérer CORS en utilisant un middleware pour gérer les requêtes inter-domaines.

Cet article vous expliquera comment utiliser le middleware pour implémenter CORS dans Laravel, notamment comment configurer le middleware, définir les noms de domaine et les méthodes de requête autorisés, et fournir des exemples de code spécifiques.

Étape 1 : Créer un middleware CORS

Tout d'abord, nous devons créer un middleware pour gérer CORS. Utilisez la commande suivante dans le terminal pour générer un nouveau fichier middleware :

php artisan make:middleware CorsMiddleware

Cette commande générera un fichier nommé dans le répertoire <code>app/Http/Middleware CorsMiddleware Fichier .php. app/Http/Middleware目录下生成一个名为CorsMiddleware.php的文件。

打开CorsMiddleware.php文件,修改handle方法如下:

public function handle($request, Closure $next)
{
    $response = $next($request);
    
    $response->header('Access-Control-Allow-Origin', '*');
    $response->header('Access-Control-Allow-Methods', 'GET, POST, PUT, DELETE, OPTIONS');
    $response->header('Access-Control-Allow-Headers', 'Content-Type, Authorization');
    
    return $response;
}
Copier après la connexion

在这个中间件中,我们设置了三个响应头,分别是:Access-Control-Allow-OriginAccess-Control-Allow-MethodsAccess-Control-Allow-HeadersAccess-Control-Allow-Origin允许所有源进行跨域访问,您也可以根据需要设置特定的域名。Access-Control-Allow-Methods定义允许的请求方法,这里我们设置了常见的GET、POST、PUT、DELETE和OPTIONS。Access-Control-Allow-Headers允许的请求头中包含了Content-Type和Authorization。

步骤二:注册CORS中间件

打开app/Http/Kernel.php文件,找到$middleware数组,并在数组中添加以下行代码:

protected $middleware = [
    // ...
    AppHttpMiddlewareCorsMiddleware::class,
];
Copier après la connexion

以上代码将添加CorsMiddleware中间件到全局中间件堆栈中,以便它可以应用于每一个请求。

步骤三:使用CORS中间件

为了验证我们的CORS中间件是否有效,我们可以在一个API路由中使用它。在routes/api.php文件中,添加一个GET路由,并为该路由使用CorsMiddleware中间件:

Route::get('/test', function () {
    return response()->json(['message' => 'Hello World']);
})->middleware('cors');
Copier après la connexion

这个路由将返回一个包含"Hello World"消息的JSON响应。

步骤四:验证CORS设置

现在我们可以使用任何支持跨域访问的客户端,例如浏览器或REST客户端进行验证。在浏览器的开发工具中,我们可以看到响应的头部信息。

例如,在Chrome浏览器上,打开开发者工具,切换到"Network"选项卡,然后访问我们在步骤三中定义的路由/api/test。在响应头部信息中,我们应该看到Access-Control-Allow-OriginAccess-Control-Allow-MethodsAccess-Control-Allow-Headers

Ouvrez le fichier CorsMiddleware.php et modifiez la méthode handle comme suit :

rrreee

Dans ce middleware, nous définissons trois en-têtes de réponse, qui sont : Access -Control-Allow-Origin, Access-Control-Allow-Methods et Access-Control-Allow-Headers. Access-Control-Allow-Origin permet un accès inter-domaines à partir de toutes les sources, et vous pouvez également définir des noms de domaine spécifiques selon vos besoins. Access-Control-Allow-Methods définit les méthodes de requête autorisées. Ici, nous définissons les valeurs communes GET, POST, PUT, DELETE et OPTIONS. Les en-têtes de requête autorisés de Access-Control-Allow-Headers incluent Content-Type et Authorization.

Étape 2 : Enregistrez le middleware CORS

Ouvrez le fichier app/Http/Kernel.php, recherchez le tableau $middleware et ajoutez les lignes de code suivantes dans le array : 🎜 rrreee🎜Le code ci-dessus ajoutera le middleware CorsMiddleware à la pile middleware globale afin qu'il puisse être appliqué à chaque requête. 🎜🎜Étape 3 : Utiliser le middleware CORS 🎜🎜Pour vérifier si notre middleware CORS est valide, nous pouvons l'utiliser dans une route API. Dans le fichier routes/api.php, ajoutez une route GET et utilisez le middleware CorsMiddleware pour cette route : 🎜rrreee🎜Cette route renverra un message contenant "Hello World" La réponse JSON du message. 🎜🎜Étape 4 : Vérifiez les paramètres CORS🎜🎜Nous pouvons désormais utiliser n'importe quel client prenant en charge l'accès inter-domaines, tel qu'un navigateur ou un client REST pour la vérification. Dans les outils de développement du navigateur, nous pouvons voir les informations d'en-tête de réponse. 🎜🎜Par exemple, sur le navigateur Chrome, ouvrez les outils de développement, passez à l'onglet "Réseau", puis accédez à la route /api/test que nous avons définie à la troisième étape. Dans les en-têtes de réponse, nous devrions voir Access-Control-Allow-Origin, Access-Control-Allow-Methods et Access-Control-Allow-Headers code> paramètres. 🎜🎜Si tout va bien, vous devriez pouvoir envoyer des requêtes HTTP à partir de différents noms de domaine et obtenir des réponses avec succès. 🎜🎜Conclusion : 🎜🎜En utilisant un middleware, le framework Laravel fournit un moyen simple de réaliser un partage de ressources entre domaines. Cet article explique comment créer un middleware CORS, enregistrer un middleware et utiliser un middleware pour gérer les requêtes inter-domaines. J'espère que cet article pourra vous aider à implémenter CORS dans Laravel et fournira suffisamment d'exemples de code pour votre référence. 🎜

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