Maison  >  Article  >  cadre php  >  Comment utiliser le framework Hyperf pour le traitement inter-domaines

Comment utiliser le framework Hyperf pour le traitement inter-domaines

王林
王林original
2023-10-20 10:36:181569parcourir

Comment utiliser le framework Hyperf pour le traitement inter-domaines

Comment utiliser le framework Hyperf pour le traitement inter-domaines

Cross-domain signifie que lorsque le navigateur demande des ressources au serveur, il suivra la politique de même origine pour protéger la sécurité des données utilisateur. La même politique d'origine exige que le navigateur puisse envoyer des requêtes uniquement aux serveurs ayant le même nom de domaine, le même port et le même protocole. Cependant, dans certains cas, notre application peut avoir besoin de demander des ressources à des serveurs portant des noms de domaine différents, ce qui nécessite un traitement inter-domaines.

Hyperf est un framework PHP hautes performances basé sur Swoole, conçu pour offrir une évolutivité et une efficacité de développement puissantes. Ce qui suit présentera comment effectuer un traitement inter-domaines dans le framework Hyperf et donnera des exemples de code spécifiques.

  1. Modifier le middleware
    Dans Hyperf, nous pouvons gérer les requêtes inter-domaines via un middleware. Tout d’abord, nous devons créer un nouveau middleware pour gérer les requêtes inter-domaines. Créez un fichier nommé CorsMiddleware.php dans le répertoire app/Middleware, puis écrivez le code suivant dans le fichier :
<?php

declare(strict_types=1);

namespace AppMiddleware;

use HyperfHttpMessageStreamSwooleStream;
use PsrHttpMessageResponseInterface;
use PsrHttpMessageServerRequestInterface;
use PsrHttpServerMiddlewareInterface;
use PsrHttpServerRequestHandlerInterface;

class CorsMiddleware implements MiddlewareInterface
{
    public function process(ServerRequestInterface $request, RequestHandlerInterface $handler): ResponseInterface
    {
        $response = $handler->handle($request);
        // 设置允许跨域的域名,* 表示允许任意域名跨域
        $response = $response->withHeader('Access-Control-Allow-Origin', '*');
        // 设置允许的请求方法
        $response = $response->withHeader('Access-Control-Allow-Methods', 'GET, POST, PUT, DELETE, OPTIONS');
        // 设置允许的请求头
        $response = $response->withHeader('Access-Control-Allow-Headers', 'Content-Type,Authorization');
        // 设置是否允许带认证信息(例如cookie)的请求
        $response = $response->withHeader('Access-Control-Allow-Credentials', 'true');
        // 设置预检请求的缓存时间(秒)
        $response = $response->withHeader('Access-Control-Max-Age', '3600');
        return $response;
    }
}
  1. Enregistrer le middleware
    Pour que le middleware prenne effet, nous devons l'enregistrer dans la liste globale des middlewares. . Ouvrez le fichier config/autoload/middlewares.php, recherchez le tableau $middlewares et ajoutez CorsMiddleware::class au début du tableau :
<?php

declare(strict_types=1);

return [
    'http' => [
        AppMiddlewareCorsMiddleware::class,
        // 其他中间件...
    ],
];
  1. Configurer le routage
    Enfin, nous devons ajouter le traitement des requêtes OPTIONS dans le routage. Ouvrez le fichier config/routes.php et ajoutez le code suivant à la définition de la route :
<?php

use HyperfHttpServerRouterRouter;

Router::addRoute(['OPTIONS'], '/{path:.+}', function () {
    return '';
});

Ce code interceptera toutes les requêtes OPTIONS et renverra une réponse vide.

À ce stade, nous avons terminé l'opération de traitement inter-domaines dans le framework Hyperf. Désormais, notre application peut recevoir des requêtes de n'importe quel nom de domaine et renvoyer les données appropriées.

Résumé :
Grâce aux étapes ci-dessus, nous comprenons comment effectuer un traitement inter-domaines dans le framework Hyperf. Tout d’abord, nous avons créé un middleware pour définir les informations d’en-tête de requête pertinentes qui autorisent les requêtes inter-domaines. Ensuite, nous avons enregistré le middleware dans la liste globale des middlewares et configuré le traitement des requêtes OPTIONS. De cette façon, notre application peut effectuer des requêtes inter-domaines en douceur.

Des exemples de codes ont été donnés, et vous pouvez les modifier et les développer en fonction de vos besoins réels. Les hautes performances et la flexibilité du framework Hyperf nous permettent de développer facilement diverses fonctions, y compris le traitement inter-domaines. J'espère que cet article sera utile à tout le monde.

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