Alle HTTP-Anfragen des Applets verwenden die Methode wx.request({}), aber diese Methode generiert jedes Mal eine neue Sitzung und ist daher nicht für bestimmte Verwendungsszenarien geeignet (Sicherheitsüberprüfung, Sitzungsspeicherung, CSRF-Schutz) usw. Es wird einige Probleme geben. Beispielsweise ist in einer CSRF-geschützten Anwendung die CSRF-Datei, selbst wenn sie beim letzten Mal abgerufen wurde, bei der nächsten Anforderung ungültig.
Die CSRF wurde als Beispiel erhalten, einfach und grob, wann Die Anwendung startet () Sie können die Cookie-Informationen für die erste Anfrage während onLaunch abrufen und lokal speichern. Sie können erzwingen, dass die Cookie-Informationen in Zukunft jedes Mal zum Anfrage-Header hinzugefügt werden.
Der Code lautet wie folgt:
//app.jsApp({ onLaunch:function(){ this.initSession(); }, initSession:function(){ var that = this; // step one:get cookie wx.request({ url:'https://my.domain.com/open-api/cookie', header:{'Content-Type':'application/x-www-form-urlencoded'}, method:'GET', success:function(res){ for(let cookie of res.data){ //这里我仅保存了sessionid,根据需要,也可以保存cookie的其它信息。 if(cookie.name === 'JSESSIONID') { that.globalData.sessionId=cookie.value; wx.request({ url:'https://my.domain.com/open-api/csrf', header:{'Content-Type':'application/x-www-form-urlencoded','Cookie':'JSESSIONID='+that.globalData.sessionId}, method:'GET', success:function(res){ that.globalData.csrf=res.data; } }) break; } } } }) } })
Von nun an können Sie jedes Mal, wenn Sie eine andere API-Schnittstelle anfordern, diese hinzufügen Fügen Sie es in den Anforderungsheader csrf und sessionId ein, um dieselbe Sitzung aufrechtzuerhalten.
Der Code lautet wie folgt:
doSth:function(){ var that = this; wx.request({ url:'my.domain.com/api/some-thing', //这里的CSRF的key(CSRF-TOKEN)具体写什么,根据各位自己的程序设置来写 header:{'Content-Type':'application/x-www-form-urlencoded','Cookie':'JSESSIONID='+that.globalData.sessionId,'CSRF-TOKEN':that.globalData.csrf}, method:'POST', data:paramdata, success:function(res){ doSomething(res.data); } }) }
Das obige ist der detaillierte Inhalt vonDie Lösung für das Problem, dass die Sitzungserhaltung des WeChat-Applets beim nächsten Mal fehlschlägt. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!