Avec le développement des petits programmes, de plus en plus d'applications web développent des petits programmes. Lors du développement de mini-programmes, nous devons souvent juger les demandes d'accès afin de fournir des services exclusifs pour le mini-programme.
Pour les applications web développées à l'aide du framework ThinkPHP5, il est très simple de déterminer si la demande d'accès provient d'un petit programme. La méthode d'implémentation spécifique est présentée ci-dessous.
1. Caractéristiques des requêtes du mini programme
Lorsque le mini programme envoie une requête à une application Web, il ajoutera des identifiants spéciaux à l'en-tête HTTP afin que l'application Web est capable de reconnaître que ces requêtes proviennent d'une applet. Parmi elles, les caractéristiques courantes des requêtes de mini-programme sont les suivantes :
dans l'en-tête HTTP Dans le champ User-Agent, le mini programme aura sa propre identité. Par exemple, le logo de l'applet WeChat est « miniProgram » et le logo de l'applet Alipay est « AlipayClient ».
Lorsque le mini programme initie une requête à l'application web, il portera sa propre source informations, c'est-à-dire le champ Référent. L'application Web peut déterminer si la requête provient de l'applet via le champ Référent. Par exemple, le Referer de l'applet WeChat contiendra « servicewechat.com ».
Lorsque l'applet envoie une requête à l'application Web, elle utilise généralement "application/json" format envoyé. Par conséquent, l'application Web peut déterminer si la requête provient de l'applet via le champ ContentType.
Ensuite, nous pouvons utiliser les caractéristiques ci-dessus pour déterminer si la demande provient d'un mini programme destiné à fournir des services exclusifs.
2. Utilisez ThinkPHP5 pour déterminer les requêtes de mini-programmes
Dans ThinkPHP5, nous pouvons utiliser la classe Request pour obtenir et déterminer les informations pertinentes de la requête. La méthode de mise en œuvre spécifique est la suivante :
1. Obtenez les informations demandées sur l'agent utilisateur :
$userAgent = $this->request->header('User-Agent');
2. Obtenez les informations sur le référent demandées :
$referer = $this->request->header('Referer');
$contentType = $this->request->contentType();
namespace appmiddleware; use thinkRequest; class CheckMiniProgram { public function handle(Request $request, Closure $next) { $contentType = $request->contentType(); $userAgent = $request->header('User-Agent'); $referer = $request->header('Referer'); if ($contentType == 'application/json' && strpos($userAgent, 'miniProgram') !== false && strpos($referer, 'servicewechat.com') !== false) { //是小程序请求,进行相关处理 ... } else { //不是小程序请求,直接放行 return $next($request); } } }
return [ 'CheckMiniProgram' => appmiddlewareCheckMiniProgram::class, ];
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!