Problemanalyse:
Wir wissen, dass ein 403-Fehler auftritt, wenn das Front-End-Programm eine Anfrage an den Back-End-Server sendet und der Server keine domänenübergreifenden Anfragen zulässt (die Fehlermeldung lautet: „Ungültige CORS-Anfrage“). Wie kann man dieses Problem lösen?
(Teilen von Lernvideos: Programmiervideo)
Lösung:
Konfigurieren Sie die vertrauenswürdige Domäne für die CORS-Liste der zulässigen Quelladressen, wie im folgenden Code gezeigt:
@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; }
Für die Entwicklung des WeChat-Applets ist die Situation so Etwas anders: Da das WeChat-Applet nur https-Verbindungen in Form von Domänennamen zulässt, wird über Intranet-Penetrationstools wie Peanut Shell ein extern zugänglicher öffentlicher Domänenname erstellt, und der öffentliche Domänenname verweist auf die interne Adresse.
Beim Debuggen bin ich auf das Problem illegaler domänenübergreifender Anfragen gestoßen. Der Grund dafür ist, dass das WeChat-Entwicklertool bei der Anfrage an den Backend-Server das Feld „Ursprung“ in den Anfrageheader einfügt, sodass der Server erkennt, dass es sich um eine domänenübergreifende Anfrage handelt. Mit Tools wie Fiddler können Sie Pakete erfassen und die folgenden Informationen anzeigen:
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"}
Der Grund ist hier. Wenn Sie direkt auf Ihrem Mobiltelefon eine Vorschau oder ein Debugging durchführen, tritt dieses Problem nicht auf.
Fügen Sie http://127.0.0.1:55135 zur Domäne hinzu, die den CORS-Zugriff ermöglicht, und Sie können problemlos mit dem Debuggen beginnen.
Natürlich ändert sich der Port 55135 häufig und ich habe noch keine Möglichkeit gefunden, das Problem zu beheben. Derzeit können Sie diesen Port mithilfe der folgenden Methoden schnell finden (am Beispiel von Windows):
1 findstr „wechat“, finden Sie die Prozessnummer mit der größten Speichernutzung, z. B. 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 -ano |. findstr „12824“, finden Sie die Zeile mit dem Status LISTENING und dem einzigen 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, dem Port, den wir suchen.
Verwandte Empfehlungen: WeChat Mini-Programmentwicklungs-Tutorial
Das obige ist der detaillierte Inhalt vonSo beheben Sie den 403-Fehler beim Entwickeln eines kleinen Programms. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!