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.
<?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; } }
<?php declare(strict_types=1); return [ 'http' => [ AppMiddlewareCorsMiddleware::class, // 其他中间件... ], ];
<?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!