Я пытаюсь переопределить document.cookie, так как мне нужно управлять файлом cookie , но кажется, что getOwnPropertyDescriptor, наложенное на document.cookie, не извлекает его получателя и сеттера (проверено на chrome и firefox). Может ли кто-нибудь объяснить мне такое поведение?Получение документа.cookie getter и setter
https://jsfiddle.net/1363ktwp/7/
var obj={};
// creating a property using document.cookie descriptors
Object.defineProperty(
obj,
"oldCookie",
Object.getOwnPropertyDescriptor(document, "cookie")
);
// setting cookies succesfully
document.cookie="test1=ok;path=/;expires=365;";
document.cookie="test2=ok;path=/;expires=365;";
alert(document.cookie);
Object.defineProperty(document, "cookie", {
get: function() {
return obj.oldCookie;
},
set: function (cookie) {
/*
...preliminar operations
*/
obj.oldCookie = cookie;
}
});
// obj.oldCookie is just a string without getter/setter
// so assignments below doesn't works correctly
document.cookie="test3=ok;path=/;expires=365;";
document.cookie="test4=ok;path=/;expires=365;";
alert(document.cookie);
спасибо за объяснения! Я пытаюсь решить проблему, вызванную законом ЕС по печенью. Для этого требуется управлять всеми типами файлов cookie, создаваемых сайтом, но нет возможности отключить/управлять ими, не изменяя конкретный код, который его создает (в контексте, когда у вас есть платформа, заполненная сторонними плагинами, которые не должны быть измененный становится очень тяжелым). Именно поэтому я искал «глобальное» решение. – Joseph
@ Джозеф: Да. Последние рекомендации по этому поводу, насколько я знаю (и я не юрист [и даже если был, я не являюсь вашим * адвокатом]) заключается в том, что с политикой cookie и ссылкой на нее с целевой страницы вероятно, достаточно, и что в сочетании с простым баннером уведомлений (который пользователь может убрать - предпочтение, которое вы можете сохранить в cookie, забавно, но лучше хранить в 'localStorage'), достаточно много. Подробнее: https://econsultancy.com/blog/63118-17-useful-examples-of-eu-cookie-law-compliance/ –