zoukankan      html  css  js  c++  java
  • xgqfrms™, xgqfrms® : xgqfrms's offical website of GitHub!

    Cookies Reader

    
    "use strict";
    
    /**
     *
     * @author xgqfrms
     * @license MIT
     * @copyright xgqfrms
     *
     * @description CookiesReader
     * @augments
     * @example
     *
     */
    
    const CookiesReader = (key = ``, debug = false) => {
        if(key) {
            let name = `${key}=`;
            let decodedCookie = decodeURIComponent(document.cookie);
            let cookies = decodedCookie.split(`;`);
            for(let i = 0; i <cookies.length; i++) {
                let cookie = cookies[i];
                while (cookie.charAt(0) === ` `) {
                    // trim() ???
                    cookie = cookie.substring(1);
                }
                if (cookie.indexOf(name) === 0) {
                    return cookie.substring(name.length, cookie.length);
                }
            }
            return "";
        } else {
            console.error(`Please pass the key of cookie!, key = ${key}`);
        }
    };
    
    const getCookieValue = (key = ``, debug = false) => {
        if(key) {
            let name = `${key}=`;
            let decodedCookie = decodeURIComponent(document.cookie);
            let cookies = decodedCookie.split(`;`);
            for(let i = 0; i <cookies.length; i++) {
                let cookie = cookies[i];
                while (cookie.charAt(0) === ` `) {
                    // trim() ???
                    cookie = cookie.substring(1);
                }
                if (cookie.indexOf(name) === 0) {
                    return cookie.substring(name.length, cookie.length);
                }
            }
            return "";
        } else {
            console.error(`Please pass the key of cookie!, key = ${key}`);
        }
    };
    
    
    
    export default CookiesReader;
    
    export {
        CookiesReader,
        getCookieValue,
    };
    
    
    
    /*
    
    
    import {
        getCookieValue,
        // CookiesReader,
    } from "./cookies-reader";
    
    JSON.parse(decodeURIComponent(atob(getCookieValue(`access_token_test`).split(`.`)[1])));
    JSON.parse(decodeURIComponent(atob(getCookieValue(`access_token_prod`).split(`.`)[1])));
    
    
    JSON.parse(decodeURIComponent(atob(getCookieValue(`${access_token}`).split(`.`)[1])));
    
    
    */
    
    

    demo

    
    import {
        getCookieValue,
        // CookiesReader,
    } from "./cookies-reader";
    
    
    JSON.parse(decodeURIComponent(atob(getCookieValue(`access_token_test`).split(`.`)[1])));
    JSON.parse(decodeURIComponent(atob(getCookieValue(`access_token_prod`).split(`.`)[1])));
    
    
    
    
    
    
    import {
        getCookieValue,
        // CookiesReader,
    } from "./cookies-reader";
    
    import {
        ROLE,
        DEV
    } from "./url-roles";
    
    
    
    let access_token = ``;
    
    if (DEV === "production") {
        access_token = `access_token_prod`;
    } else {
        access_token = `access_token_test`;
    }
    
    
    // let token = JSON.parse(decodeURIComponent(atob(document.cookie.replace(`${access_token}`, ``).split(`.`)[1])));
    let token = JSON.parse(decodeURIComponent(atob(getCookieValue(`${access_token}`).split(`.`)[1])));
    
    

    HttpOnly & bug

    bug

    const CookiesReader = (key = ``, debug = false) => {
        if(key) {
            let name = `${key}=`;
            let decodedCookie = decodeURIComponent(document.cookie);
            let cookies = decodedCookie.split(`;`);
            for(let i = 0; i <cookies.length; i++) {
                let cookie = cookies[i];
                while (cookie.charAt(0) === ` `) {
                    // trim() ???
                    cookie = cookie.substring(1);
                }
                if (cookie.indexOf(name) === 0) {
                    return cookie.substring(name.length, cookie.length);
                }
            }
            return "";
        } else {
            console.error(`Please pass the key of cookie!, key = ${key}`);
        }
    };
    
    CookiesReader(`JSESSIONID`);
    
    


  • 相关阅读:
    RabbitMQ架构面试题答不出来怎么办!大佬手绘架构图带你分分钟搞懂!
    【秋招必备】大数据面试题100道(2021最新版)
    【秋招必备】设计模式面试题(2021最新版)
    【秋招必备】TCP,UDP,Socket,Http网络编程面试题(2021最新版)
    3分钟带你玩转MySQL体系结构和查询原理!
    易车面试官:说说MySQL内存结构、索引、集群、底层原理!
    【秋招必备】Mybatis面试题(2021最新版)
    iOS-项目开发1
    ReactNatvie遇到的错误
    细节
  • 原文地址:https://www.cnblogs.com/xgqfrms/p/9816422.html
Copyright © 2011-2022 走看看