Heim > WeChat-Applet > Mini-Programmentwicklung > Implementierung des WeChat-Applet-Simulationscookies

Implementierung des WeChat-Applet-Simulationscookies

不言
Freigeben: 2018-06-22 16:52:23
Original
3736 Leute haben es durchsucht

In diesem Artikel wird hauptsächlich die Implementierung des WeChat-Applet-Simulationscookies vorgestellt. Der Inhalt ist ziemlich gut. Jetzt teile ich ihn mit Ihnen und gebe ihn als Referenz.

Entwicklungshintergrund

Das bestehende System verfügt bereits über einen vollständigen Satz an Schnittstellen, und Benutzerstatus und Überprüfung basieren alle auf Cookies .

Einige Unternehmen benötigen eine Mini-Programmversion. Wie wir alle wissen, unterstützen WeChat-Miniprogramme keine Cookies. Um das Geschäft online zu starten, ist es am besten, dies auf der Grundlage der vorhandenen Schnittstellen zu tun. Es wird sich nicht viel ändern und ist auch am schnellsten.

Cookie simulieren

Anfrage über das Entwicklungstool des Browsers anzeigen, Netzwerkleiste, das Cookie im Browser wird übernommen Jeder In den Anforderungsheadern von http wird Cookie als Schlüsselname verwendet.

Dann setzen wir in WeChats offizieller Anfragemethode wx.request den Header und fügen ein Cookie hinzu, das simuliert werden kann.

Es stellt sich wieder die Frage, wie man das Cookie vom Server zurückbekommt.

Zeigen Sie den HTTP-Return-Header über die Anmeldeschnittstelle an (beim Anmelden implantiert der Server ein Cookie als Sitzung).

wx.request({
  url: '/api/login',
  success: (data) => {
    if(data.statusCode === 200) {
      console.log(data);
      // data 中应该会有 Set-Cookie 或 set-cookie 的字样,嗯,那就是服务器种下的 cookie
    }
  }
})
Nach dem Login kopieren

Holen Sie sich das Cookie, speichern Sie es lokal und fügen Sie es direkt ein, wenn Sie das nächste Mal Daten anfordern, perfekt.

Cookies formatieren

Ich dachte ursprünglich, dass Cookies nur eingegeben und beendet werden müssen, um perfekt simuliert zu werden, aber im tatsächlichen Betrieb Ich habe festgestellt, dass das an den Server gesendete Cookie nicht erkannt werden kann.

Das vom Server zurückgegebene Cookie enthält viele Felder zur Speicherung, wie z. B. path=/;

// 服务器放回的 cookie
let cookie = 'userKey=1234567890; Path=/; Expires=Thu, 21 Jun 2018 13:15:08 GMT; HttpOnly,userId=111; Path=/; Expires=Thu, 21 Jun 2018 13:15:08 GMT,nickName=; Path=/; Expires=Thu, 21 Jun 2018 13:15:08 GMT,userName=111111; Path=/; Expires=Thu, 21 Jun 2018 13:15:08 GMT,imgUrl=; Path=/; Expires=Thu, 21 Jun 2018 13:15:08 GMT';

// 模拟的是需要的格式样式
let virtualCookie = 'userKey=1234567890; userName=111111; userId=111;';
Nach dem Login kopieren

Oh mein Gott~was tun Sie möchten? Filtern Sie es.

Eine einfache und grobe Filterlösung geschrieben.

// cookie 的本地存储位置
const COOKIE_KEY = '__cookie_key__';

/**
 * 格式化用户需要的 cookie
 */
const normalizeUserCookie = (cookies = '') => {
  let __cookies = [];
  (cookies.match(/([\w\-.]*)=([^\s=]+);/g) || []).forEach((str) => {
    if (str !== 'Path=/;' && str.indexOf('csrfToken=') !== 0) {
      __cookies.push(str);
    }
  });
  wx.setStorageSync(COOKIE_KEY, __cookies.join(' '));
};
Nach dem Login kopieren

csrfToken wird neben Egg.js verwendet. In einigen Anwendungen wird Path=/; als path=/;

Filtert hauptsächlich Daten wie normalizeUserCookie und schließt dann bedeutungslose Daten wie xx=xxx aus. path=/;

Speichern Sie beim Anmelden an der Schnittstelle das Cookie und bringen Sie es bei der nächsten Anfrage mit. Dann sollte es, ja, vielleicht, simuliert werden.

Funktioniert mit Egg.js

Das integrierte

Plug-in von Egg unterstützt alle „nicht sicheren“ Methoden Standardmäßig führen POST, PUT und DELETE alle eine CSRF-Überprüfung durch. egg-security Egg.js Obwohl CSRF in der Konfiguration deaktiviert werden kann, was ist, wenn es verwendet werden muss?

Zuerst müssen wir eines verstehen,

wie es dazu kam. csrfToken

Nach vielen Überprüfungen ist bekannt, dass der csrfToken-Wert nicht an der vereinbarten Stelle übertragen wird. Diese Anforderung enthält ein neues csrfToken im zurückgegebenen Cookie csrfToken-Wert, Wert, er wird nicht als csrfToken generiert. Wenn das csrfToken am vereinbarten Speicherort mit dem csrfToken im Cookie übereinstimmt, wird die Überprüfung bestanden.

Befolgen Sie den obigen

Vorgang, legen Sie zunächst das csrfToken beiseite und verwalten Sie den Benutzerstatus allein. 格式化用户需要的 cookie

Versuchen Sie nach jeder Anfrage, das möglicherweise im Cookie vorhandene csrfToken separat abzurufen. Wenn es einen Wert gibt, überspringen Sie ihn und verwenden Sie den alten Wert.

Kapselt einen Ajax

Dieses Applet basiert auf Wepy, also dem optimierten

; wepy.request

Egg.js-basierte Version.

Es kann sich geringfügig von der tatsächlichen Entwicklung unterscheiden, bitte ändern Sie es entsprechend.

rrree

Das Obige ist der gesamte Inhalt dieses Artikels. Ich hoffe, er wird für das Lernen aller hilfreich sein. Bitte achten Sie auf PHP Chinesische Website!

Verwandte Empfehlungen:

WeChat-Miniprogramm Einführung in die Page()-Funktion

Verwendung von wx:for und wx:for-item im WeChat-Applet

Das obige ist der detaillierte Inhalt vonImplementierung des WeChat-Applet-Simulationscookies. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Verwandte Etiketten:
Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage