Heim  >  Artikel  >  WeChat-Applet  >  So beheben Sie den 403-Fehler beim Entwickeln eines kleinen Programms

So beheben Sie den 403-Fehler beim Entwickeln eines kleinen Programms

王林
王林nach vorne
2020-12-21 09:23:474398Durchsuche

So beheben Sie den 403-Fehler beim Entwickeln eines kleinen Programms

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!

Stellungnahme:
Dieser Artikel ist reproduziert unter:csdn.net. Bei Verstößen wenden Sie sich bitte an admin@php.cn löschen