一级片大奶子_色又黄又爽18禁免费视频_热久久久久久久_久久久精品一区二区_日韩av不卡在线播放_精品国内自产拍在线观看视频

商城系統(tǒng) 注冊

微信小程序模擬cookie的實(shí)現(xiàn)

2020-09-27|HiShop
導(dǎo)讀:大部分的微信小程序不支持cookie,那么微信小程序模擬cookie的實(shí)現(xiàn)要如何開發(fā),下面為大家?guī)砦⑿判〕绦蚰Mcookie的實(shí)現(xiàn)過程。...

大部分的微信小程序不支持cookie,那么微信小程序模擬cookie的實(shí)現(xiàn)要如何開發(fā),下面為大家?guī)砦⑿判〕绦蚰Mcookie的實(shí)現(xiàn)過程。

微信小程序模擬cookie的實(shí)現(xiàn)

開發(fā)背景

現(xiàn)有系統(tǒng)已經(jīng)有一套完整的接口,用戶狀態(tài)、驗(yàn)證都是基于 cookie 的。

部分業(yè)務(wù)要上小程序版本,眾所周知,微信小程序不支持 cookie 的。要上線的業(yè)務(wù),最好的方式還是基于現(xiàn)有這套接口做,改動(dòng)不大,也最快。

模擬 cookie

通過瀏覽器的開發(fā)工具,Network 欄查看請求,瀏覽器中的 cookie 會(huì)攜帶在每個(gè) http 的 Request Headers 里面,用 Cookie 作為鍵名。

那么,在微信官方請求方式 wx.request 中,我們設(shè)置 header,添加一個(gè) Cookie 應(yīng)該可以得以模擬。

問題又來了,怎么獲取到服務(wù)器返回的 cookie 呢。

通過登錄接口(登錄的時(shí)候,服務(wù)器端會(huì)植入 cookie 作為 session),查看 http 返回頭。

wx.request({
    url: '/api/login',
    success: (data) => {
        if(data.statusCode === 200) {
            console.log(data);
            // data 中應(yīng)該會(huì)有 Set-Cookie 或 set-cookie 的字樣,嗯,那就是服務(wù)器種下的 cookie
        }
    }
})

拿到 cookie 存入本地中,下次請求數(shù)據(jù)的時(shí)候直接塞進(jìn)去,完美。

格式化 cookie

原本以為 cookie 只需要一進(jìn)一出就可以完美模擬,實(shí)際操作才發(fā)現(xiàn),攜帶上去的 cookie 服務(wù)器無法識(shí)別。

服務(wù)器返回的 cookie 中,會(huì)攜帶上很多儲(chǔ)存用的字段,例如 path=/;

// 服務(wù)器放回的 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;';

媽耶~要怎么過濾呢。

簡單粗糙的寫了一個(gè)過濾方案。

// cookie 的本地存儲(chǔ)位置
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 是接下來配合 Egg.js 用的,Path=/; 在某些應(yīng)用下會(huì)是 path=/;

normalizeUserCookie 主要是過濾了 xx=xxx; 這樣的數(shù)據(jù),然后排除 path=/; 這樣無意義的數(shù)據(jù)。

在登錄接口的時(shí)候,存上 cookie,在接下來的請求中帶上,那么,應(yīng)該、沒錯(cuò)、可能、可以模擬了。

配合 Egg.js

Egg 內(nèi)置的 egg-security 插件默認(rèn)對所有『非安全』的方法,例如 POST,PUT,DELETE 都進(jìn)行 CSRF 校驗(yàn)。

Egg.js 雖然可以在配置中關(guān)閉 CSRF,但是,如果一定要使用呢?

首先,要弄明白一件事,csrfToken 怎么來的。

經(jīng)過多次驗(yàn)證得知,當(dāng) http 請求時(shí),在約定位置沒有攜帶上 csrfToken 值,此次請求會(huì)在返回的 cookie 中攜帶上一個(gè)新的 csrfToken;當(dāng)本次請求已攜帶上值,就不會(huì)產(chǎn)生成 csrfToken。當(dāng)約定位置帶上的 csrfToken 與 cookie 里面的 csrfToken 一致時(shí),通過驗(yàn)證。

接上面的 格式化用戶需要的 cookie 操作,先拋開 csrfToken 單獨(dú)處理用戶狀態(tài)等。

在每次請求結(jié)束后,試著單獨(dú)拿 cookie 中可能存在的 csrfToken,有值就緩存,沒值跳過用舊值。

封裝一個(gè) Ajax

本次小程序是基于 wepy 的,所以使用了優(yōu)化后的 wepy.request;

基于 Egg.js 的版本。

可能與實(shí)際開發(fā)有點(diǎn)出入,適當(dāng)修改。

import wepy from 'wepy';

export const HTTP_HOST = 'http://127.0.0.1:3000';

export const HTTP_HOST_API = `${HTTP_HOST}/api/wxmp`;

// cookie 的本地存儲(chǔ)位置
const COOKIE_KEY = '__cookie_key__';
// csrfToken 的本地存儲(chǔ)位置
const CSRF_TOKEN_KEY = '__csrf_token__';

/**
 * 清除用戶Cookie
 */
export const cleanUserCookie = () => {
    wx.setStorageSync(COOKIE_KEY, '');
}

/**
 * 格式化用戶需要的 cookie
 * @param {String} cookies
 */
export 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);
};

/**
 * 格式化 token
 */
const normalizeCsrfToken = () => {
    let __value = wx.getStorageSync(CSRF_TOKEN_KEY) || '';
    let __inputs = __value.match(/csrfToken=[\S]*/) || [];
    let __key = __inputs[0]; // csrfToken=1212132323;
    if (!!!__key) {
        return '';
    }
    // 脫水
    return __key.replace(/;$/, '').replace(/^csrfToken=/, '');
};

/**
 * 保存 csrf 的cookie
 * 不一定每次請求都會(huì)更新 cookie
 * @param {String} cookie
 */
const seveCsrfTokenCookie = (cookie) => {
    if (cookie) {
        wx.setStorageSync(CSRF_TOKEN_KEY, cookie);
    }
};

/**
 * 請求數(shù)據(jù)
 * @param {Object} opt
 */
export const doAjax = (opt) => {
    return new Promise((resolve, reject) => {
        let Cookies = wx.getStorageSync(COOKIE_KEY) || [];
        let csrf = normalizeCsrfToken();
        let url = opt.url;
        // 整理 Cookie
        Cookies.push(`csrfToken=${csrf};`);

        // 設(shè)置請求頭部
        opt.header = Object.assign(
            {
                'x-csrf-token': csrf,
                Cookie: Cookies.join(' ')
            },
            opt.header || {}
        );
        opt.success = (data) => {
            seveCsrfTokenCookie(data.header['set-cookie']);
            // 統(tǒng)一操作
            if (data.statusCode == 200) {
                if (url === '/login') {
                    normalizeUserCookie(data.header['set-cookie']);
                }
                resolve(data.data);
            } else {
                reject('未知錯(cuò)誤,請重試一次');
            }
        };
        opt.fail = (err) => {
            reject(err);
        };
        opt.url = `${HTTP_HOST_API}${opt.url}`;
        wepy.request(opt);
    });
};

微信小程序模擬cookie的實(shí)現(xiàn)

電話咨詢 預(yù)約演示 0元開店
主站蜘蛛池模板: 九九爱精品|无码精品=a∨在线观看|岛国视频在线|3D动漫精品啪啪一区二区免费|妺妺窝人体色WWW聚色窝|99色视频在线 | 午夜老司机免费视频|久久久国产精品免费=a片|奇米影视7777|八戒理论片午影院无码爱恋|国产91视频免费看|国产精品久久久久久久不卡 | 二区视频在线|久久99精品久久久野外观看|国产欧美日韩一区二区三区在线观看|久久国产色=av免费看|樱花草在线播放免费中文|亚洲最新版=aV无码中文字幕 | 日韩高清黄色片|夜夜爽一区二区三区|老司机福利在线观看|狠狠色噜噜狼狼狼色综合久|精品免费观看视频|小早川怜子一区二区的演员表 | 国产人妖在线|国产午夜福利在线播放|亚洲国产成人精品久久久国产成人|高柳の肉嫁动漫在线播放|日韩久久精品一区二区三区|精品偷自拍另类在线观看 | 青青青在线视频国产|亚洲精华国产精华液|伊人网综|国产免费久久精品久久久|一本丁香综合久久久久不卡网站|国产毛片精品国产一区二区三区 | 国产白丝喷水娇喘视频|亚洲短视频在线观看|欧美全黄|久久夫妻视频|日韩高清无码免费|2020久久精品亚洲热综合一本 | 二区=av|ww交换夫妇xxxxcom|无码中文=av有码中文=av|日本高清无打码|久久青青操|精品乱码久久久久久久 | 天海翼一区二区|黄色片高清视频|午夜激情一区二区|chinese激烈高潮hd|色精品国产|中文字幕视频网 | 久久精品国产2020|在线国产99|中文字幕视频一区|精品免费久久久|欧美性XXXX丰满极品少妞|欧美精品1区2区 | 国产精品久久久精品|jj视频在线观看|中文字幕xxxx|淫片专区|草逼免费视频|久久久久久久久久久久国产精品 | 免费观看亚洲|日韩精品色呦呦|综合色婷婷|国产69精品久久久久毛片|黑人操亚洲女人|在线无码视频观看草草视频 | 美女高潮无遮挡免费视频|x8x8拨牐拨牐x8免费视频8文字|97青青|91麻豆精品国产自产在线|亚洲伦理精品|69=av在线看 | 四虎国产精品永久入口|snh48国产大片永久|成年人免费在线观看视频网站|99久久婷婷国产综合精品首页|9977精品视频免费入口|国产日韩欧美精品一区二区 | 国产91入口|欧美精品在线一区|第一人才网|#NAME?|九色.com|亚洲精品无码专区久久 | 在线播放成人网站|国产真实younv在线|久久久久国色=av免费看|国产第一页线路1|国产高清免费=av在线|国产一区二区成人h动漫精品 | 欧美人成免费网站|图片区小说区激情区偷拍区|一级毛片免费大片|香蕉大人久久国产成人=av|亚洲欧美日本久久综合网站|亚洲精品成人=a8198=a | 亚洲精品毛片一区二区|在线理论片|精品久久久无码中文字幕边打电话|久久久久久久|亚洲中文字幕无码第一区|亚洲欧美偷自乱图片 | 日本欧美在线观看视频|国产免费观看黄=aV片|男女猛烈无遮挡免费视频|久久久久久18|四虎最新紧急更新地址|久久丝袜 | 蜜臀91精品一区二区三区|亚洲中出视频|啪啪玩小处雏女|精品日韩一区二区|久久婷婷综合色丁香五月|亚洲视频在线观看网站 | 久精品国产欧美|精品久久久久免费影院的功能介绍|香港三日本三级少妇三级视频|草草视频网|日韩精品免费在线视频|chinese洗澡偷窥voyeurhit | 亚洲一级黄色录像|免费视频国产一区|琪琪黄色|国产欧美一区二区|欧美性精品|jizz日韩 | c=aopom成人免费公开视频|中文字幕欧美人妻精品一区|91九幺丨成人|日韩久久国产|三年片大全免费观看|久草在在线 | 成色视频|欧美一级视频免费看|粉嫩=av一区二区在线播放|国产精品女丝袜白丝袜|两性午夜视频|99热在线精品国产观看 | 干亚洲美女|亚洲视频精选|91国自视频|亚洲一级影片|韩国三级在线中文字幕无码|xxx黄色片 | 少妇的肉体=a=a=a=a=a免费视频|在线视频一二三区|亚洲国产黄色大片|精品久久婷婷|裸体黑色丝袜18禁网站无风险|久视频在线播放 | 二区视频在线|久久99精品久久久野外观看|国产欧美日韩一区二区三区在线观看|久久国产色=av免费看|樱花草在线播放免费中文|亚洲最新版=aV无码中文字幕 | 新91在线视频|蜜臂精品国产高清在线观看|日韩国产黄色片|亚洲精品永久入口|国产成人午夜福利免费无码R|欧美不卡一区二区三区 | 轻轻草在线观看|国产美女遭强高潮网站|色综合视频在线观看|久久久久久久久久久久久久久|www久久艹|久久国产传媒 | 色一色成人网|久草在线影|精品视频在线观看99|国产香蕉尹人视频在线|亚洲=a∨好看=av高清在线观看|亚洲欧美日本在线 | 成人字幕网zmw|日本一区高清视频|#NAME?|麻豆播放|麻豆传媒作品|国产高清在线观看一区 | 欧美日韩一区在线观看|日日噜噜噜夜夜爽爽国产|国产成人精品一、二区|国产中文日韩欧美|经典欧美videossexo2|青青草成人免费视频在线观看 | 亚洲国产精品无码第一区二区三区|十大免费最污的软件|玖玖99视频|激情动漫在线观看|#NAME?|蝌蚪视频窝在线播放 | 国产波霸爆乳一区二区|尤物在线网址|黑人干白妞|精品一卡2卡三卡4卡免费视频|亚洲欧美VR色区|国产性=av | 日本欧美xxx|抖音奶片无罩子52秒回放|日韩福利=av|最好免费的高清视频剪辑软件|国产绳艺SM调教室论坛|黑人巨大精品欧美一区二区区 | 又大又紧又粉嫩18p少妇|国内精品自线一区麻豆|欧美h版在线观看|狠狠艹夜夜干|黄色影院在线播放|日日拍拍 | 激情欧美一区二区三区免费看|亚洲青青草|国产精品免费久久久久影视|日本亚洲欧洲免费无码|国产精品XXX大片免费观看|国产一级片网 | 婷婷五月色中文字幕网|亚洲人成人77777网站|香蕉久久一区二区三区|亚洲成=a人片在线观看中|久久不见久久见免费影院视频|看黄在线观看 | 一区二区三区不卡视频在线观看|亚洲成=a人片777777美国|午夜福利啪啪无遮挡免费|日本午夜网|日本在线一区二区三区欧美|99免费观看视频 | 久精品国产欧美|精品久久久久免费影院的功能介绍|香港三日本三级少妇三级视频|草草视频网|日韩精品免费在线视频|chinese洗澡偷窥voyeurhit | 91日韩免费|日本精品视频|免费的又色又爽又黄的片|无码视频一区二区三区|日韩成人无码网|亚州欧美一区二区 |