Maison  >  Article  >  Applet WeChat  >  Comment résoudre l'erreur 403 lors du développement d'un petit programme

Comment résoudre l'erreur 403 lors du développement d'un petit programme

王林
王林avant
2020-12-21 09:23:474406parcourir

Comment résoudre l'erreur 403 lors du développement d'un petit programme

Analyse du problème :

Nous savons que lorsque le programme front-end envoie une requête au serveur back-end, si le serveur n'autorise pas les requêtes inter-domaines , une erreur 403 se produira (le message d'erreur est : "Requête CORS invalide"). Alors comment résoudre ce problème ?

(Partage de vidéos d'apprentissage : Vidéo de programmation)

Solution :

Configurez le domaine de confiance dans la liste d'adresses sources autorisées CORS, comme suit Le code s'affiche :

@Bean
public CorsFilter corsFilter() {
   UrlBasedCorsConfigurationSource source = new UrlBasedCorsConfigurationSource();
   CorsConfiguration config = new CorsConfiguration();
   config.setAllowCredentials(true);
   config.addAllowedOrigin("http://localhost:3000");
   config.addAllowedOrigin("http://127.0.0.1:3000");
   config.addAllowedOrigin("http://127.0.0.1:55135");
   config.addAllowedHeader(CorsConfiguration.ALL);
   config.addAllowedMethod(CorsConfiguration.ALL);
   source.registerCorsConfiguration("/**", config);
   CorsFilter bean = new CorsFilter(source);
   return bean;
}

Pour le développement de l'applet WeChat, la situation est un peu différente. Puisque l'applet WeChat autorise uniquement la connexion https dans le nom de domaine, un outil de pénétration intranet tel que Peanut Shell est utilisé pour créer un public A. nom de domaine accessible de l'extérieur. Le nom de domaine public pointe vers l'adresse interne.

Lors du débogage, j'ai rencontré le problème des requêtes inter-domaines illégales. La raison en est que lors de la demande au serveur principal, l'outil de développement WeChat inclut le champ Origine dans l'en-tête de la demande, de sorte que le serveur détermine qu'il s'agit d'une demande inter-domaines. Grâce à des outils tels que Fiddler, vous pouvez capturer des paquets et voir les informations suivantes :

POST https://xxx.xxx.net/public/login HTTP/1.1Host: sharework.gicp.netConnection: keep-aliveContent-Length: 50Pragma: no-cacheCache-Control: no-cacheOrigin: http://127.0.0.1:55135User-Agent: Mozilla/5.0 (iPhone; CPU iPhone OS 9_1 like Mac OS X) AppleWebKit/601.1.46 (KHTML, like Gecko) Version/9.0 Mobile/13B143 Safari/601.1 wechatdevtools/1.02.1902010 MicroMessenger/6.7.3 Language/zh_CN webview/ token/e011a64b71b385130aa1f595fe48521ccontent-type: application/jsonAccept: */*Referer: https://servicewechat.com/wx955fc9354838fd46/devtools/page-frame.htmlAccept-Encoding: gzip, deflate, br
{"account":"user","password":"defaultPassword123"}

La raison est ici. Vous ne rencontrerez pas ce problème si vous prévisualisez ou déboguez directement sur votre téléphone.

Ajoutez http://127.0.0.1:55135 au domaine qui autorise l'accès CORS, et vous pourrez commencer le débogage avec bonheur.

Bien sûr, le port 55135 change fréquemment et je n'ai pas encore trouvé de moyen de le réparer. Actuellement, vous pouvez trouver rapidement ce port via les méthodes suivantes (en prenant Windows comme exemple) :

1. tasklist | findstr "wechat", recherchez le numéro de processus avec la plus grande utilisation de mémoire, tel que 12824

E:\apps\data-integration>tasklist | findstr "wechat"
wechatdevtools.exe           13180 Console                    2     98,572 K
wechatdevtools.exe           11092 Console                    2      7,676 K
wechatdevtools.exe           15276 Console                    2    132,520 K
wechatdevtools.exe           18380 Console                    2    136,748 K
wechatdevtools.exe            8652 Console                    2     26,100 K
wechatdevtools.exe           12824 Console                    2    183,668 K
wechatdevtools.exe           16124 Console                    2     89,524 K
wechatdevtools.exe            1164 Console                    2    103,336 K
wechatdevtools.exe           12616 Console                    2     77,056 K
wechatdevtools.exe           13136 Console                    2     83,312 K

2 , netstat -ano | findstr "12824", recherchez la ligne avec le statut LISTENING et le seul port

E:\apps\data-integration>netstat -ano | findstr "12824"
  TCP    127.0.0.1:28475        0.0.0.0:0              LISTENING       12824
  TCP    127.0.0.1:28475        127.0.0.1:61306        ESTABLISHED     12824
  TCP    127.0.0.1:28475        127.0.0.1:61318        ESTABLISHED     12824
  TCP    127.0.0.1:28475        127.0.0.1:61402        ESTABLISHED     12824
  TCP    127.0.0.1:28475        127.0.0.1:61403        ESTABLISHED     12824
  TCP    127.0.0.1:55135        0.0.0.0:0              LISTENING       12824

3, 55135 est le port que nous recherchons.

Recommandations associées :

Tutoriel de développement de programmes WeChat Mini

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:
Cet article est reproduit dans:. en cas de violation, veuillez contacter admin@php.cn Supprimer