我有以下格式存储的cookie值
{时间戳:' HMzWoJn8V4ZkdRN1DduMHLhS3dKiDDr6VoXCjjeuDMO2w6V + n2CcOg ==',必要:真,偏好:真,统计:真,销售:假,VER:1}
我需要阅读
的以下值necessary
preferences
statistics
marketing
不确定如何正确读取值,我尝试使用代码假设它是jSON格式
Cookies.get('CookieConsent')
//Parse the cookie to Object
cookieval = Cookies.get('CookieConsent');
console.log(cookieval);
console.log("Necessary: " + Boolean(cookieval.necessary));
console.log("Prefrences: " + Boolean(cookieval.preferences));
console.log("Statistics: " + Boolean(cookieval.statistics));
console.log("Marketing: " + Boolean(cookieval.marketing));
但是这段代码总是返回false。
我使用以下Jquery来读取Cookie值https://cdn.jsdelivr.net/npm/js-cookie@2/src/js.cookie.min.js
答案 0 :(得分:3)
你没有JSON格式 - 你有更接近JS对象文字表示法的东西,除了它是一个字符串而不是JS代码,所以不幸的是不能使用const input = "{stamp:'HMzWoJn8V4ZkdRN1DduMHLhS3dKiDDr6VoXCjjeuDMO2w6V+n2CcOg==',necessary:true,preferences:true,statistics:true,marketing:false,ver:1}"
const object = eval("(" + input + ")");
alert(object.necessary);
。
如果值没有逗号或冒号,您可以用逗号和JSON.parse
将字符串split
放入对象中:
reduce

const input = `{stamp:'HMzWoJn8V4ZkdRN1DduMHLhS3dKiDDr6VoXCjjeuDMO2w6V+n2CcOg==',necessary:true,preferences:true,statistics:true,marketing:false,ver:1}`;
const obj = input
.slice(1, input.length - 1)
.split(',')
.reduce((obj, str) => {
const [key, val] = str.split(':');
obj[key] = val;
return obj;
}, {});
console.log(obj);
是另一种选择,但这不安全。
答案 1 :(得分:2)
按def my_helper
if_reachable do
return my_service.load_data
end
end
和(
换算此字符串。然后像显示一样解析
注意!但您需要确保)
字符串(从cookie收到)不包含错误的代码。如未知的注入功能。在这种情况下,该函数将在客户端浏览器上执行,可以访问私有数据(cookie,localStorage,来自html表单的数据)。
input

答案 2 :(得分:1)
如何将字符串按摩成适当的JSON,将其解析为JSON对象,然后使用那里的字段?
稳定性较差,因为对输入字符串的更改可能会破坏函数,但是由于它调用JSON.parse()而不是eval()是安全的。
function reformatCookieInput(inputString) {
inputString = inputString.replace(/'/g, ""); //global strip out single quotes currently wrapping stamp
inputString = inputString.replace(/,/g, `", "`); //global replace commas with wrapped commas
inputString = inputString.replace(/:/g, `":"`); //same idea with colons
inputString = inputString.replace("{", `{"`); //rewrap start of JSON string
inputString = inputString.replace("}", `"}`); //rewrap end of JSON string
return inputString;
}
const input = `{stamp:'HMzWoJn8V4ZkdRN1DduMHLhS3dKiDDr6VoXCjjeuDMO2w6V+n2CcOg==',necessary:true,preferences:true,statistics:true,marketing:false,ver:1}`;
const properJSONObject = JSON.parse(reformatCookieInput(input));
console.log(properJSONObject);