读取从NewCookie()创建的cookie

Has*_*thi 5 javascript cookies

我使用Newcookie()创建了一个cookie,我可以通过浏览器访问它,如下所示.现在我需要阅读cookie 在此输入图像描述

    function getCookieValue(cookieName) {
    console.log("=====getCookieValue=======");
    var name = cookieName + "=";
    var cookies = document.cookie.split(';');
    console.log("=====ALL cookies======="+cookies);
    if (!cookies) {
        return null;
    }
    console.log("=====cookies.length======="+cookies.length);
    for (var i = 0; i < cookies.length; i++) {
        var cookie = cookies[i];
        console.log("=====cookies======="+cookies[0]);
        if (cookie.indexOf(name) == 0) {
            return cookie.substring(name.length, cookie.length);
        }
    }
    return null;
}
Run Code Online (Sandbox Code Playgroud)

但通过使用该方法,我无法读取cookie.请就此向我提出建议.谢谢

Seb*_*mon 1

你的功能几乎是完美的。你只需要改变这一行:

\n\n
document.cookie.split(';');\n
Run Code Online (Sandbox Code Playgroud)\n\n

您可以通过运行上述语句在控制台中检查结果: you\xe2\x80\x99 将获得一个包含所有 cookie 的数组,但每个 cookie 前面都有一个空格。这\xe2\x80\x99就是为什么要进行比较

\n\n
if (cookie.indexOf(name) == 0)\n
Run Code Online (Sandbox Code Playgroud)\n\n

\xe2\x80\x99t 不会像预期那样工作,因为预期的子字符串 \xe2\x80\x99t 不会从位置 0 开始,而是从 1 开始。

\n\n

因此,您\xe2\x80\x99 将希望不是用单个分号而是用分号和空格来分割 cookie 列表。I\xe2\x80\x99m 不确定所有的浏览器,所以我认为最安全的方法是使用 RegExp 检查可选的空格:

\n\n
document.cookie.split(/;\\s?/);\n
Run Code Online (Sandbox Code Playgroud)\n