Toutes les requêtes HTTP de l'applet utilisent la méthode wx.request({}), mais cette méthode générera une nouvelle session à chaque fois, elle n'est donc pas adaptée à des scénarios d'utilisation spécifiques (vérification de sécurité, sauvegarde de session, Protection CSRF), etc. Il y aura quelques problèmes. Par exemple, dans une application protégée par CSRF, même si le CSRF a été obtenu la dernière fois, il ne sera pas valide lors de la prochaine requête.
Le csrf a été obtenu à titre d'exemple, simple et brut, lorsque l'application démarre () Vous pouvez obtenir les informations sur les cookies pour la première requête lors du lancement et les enregistrer localement. Vous pouvez forcer l'ajout des informations sur les cookies à l'en-tête de la requête à chaque fois dans le futur.
Le code est le suivant :
//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; } } } }) } })
Désormais, chaque fois que vous demandez une autre interface api, vous pouvez ajouter dans l'en-tête de requête csrf et sessionId pour conserver la même session.
Le code est le suivant :
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); } }) }
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!