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 } } })
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;';
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(' ')); };
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=/;
Funktioniert mit Egg.js
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?
wie es dazu kam. csrfToken
Vorgang, legen Sie zunächst das csrfToken beiseite und verwalten Sie den Benutzerstatus allein. 格式化用户需要的 cookie
Kapselt einen Ajax
; wepy.request
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!