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
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
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!