我是通过 javascript 设置 cookie 值的新手,我对这两者的了解都很基础——尽管我对调整 JQuery 很满意。
总之,我在一个网站上工作,该网站必须依法显示 cookie 政策。
我们有一个第三方解决方案会弹出一个 jquery 控制的 div 容器,其中包含一条消息和几个按钮:“稍后提醒我”和“设置”。如果用户单击设置,他们可以“保存并关闭”或更改安全级别,弹出窗口将消失。
我们已经调整了这个第三方解决方案并添加了一个“接受”按钮,用户可以通过该按钮确认“默认”cookie 设置并继续使用该网站。
到目前为止,一切都很好!
我们知道这个第三方解决方案正在写入具有以下基本值的 cookie:
饼干名称:wsjnudge_javascript:jQuery_ws.jpecrJs.display(jQuery.ws.jpecrJs())_= true;
如果此值设置为,true
则提示更改 cookie 设置的弹出消息将不会再次显示,直到 cookie 过期。
问题是 cookie 名称中有一个冒号 ( : ),当我们通过 javacript 解析 cookiename 时,它会创建一个名称为:
wsjnudge_javascript%253AjQuery_ws.jpecrJs.display(jQuery.ws.jpecrJs())_
所以冒号( : )被替换为%253A
我们编写了一些 Jquery / javascript 代码来设置这个 cookie 的值并尝试对冒号进行编码:
首先通过设置一个var:
var acceptCookieEncode = encodeURIComponent
("wsjnudge_javascript:jQuery_ws.jpecrJs.display(jQuery.ws.jpecrJs())_");
然后通过单击功能写入 cookie 并关闭弹出窗口:
jQuery(document).on('click','.continue',function(){
jQuery.cookie( acceptCookieEncode, 'true', { expires: 365 });
jQuery('#wsjnudge').remove();
因此,总而言之,关闭函数正在工作,但是由于冒号,cookie 名称不正确,所以实际上我们正在创建并将值设置为错误的 cookie 名称。
我知道我可能必须使用 base64,但我完全不知道如何实现它,显然我没有正确使用encodeURIcomponent
来正确解析 URI。
如果此消息的格式不正确,我深表歉意。第一次发帖,但 StackOverflow 的常规用户,提前感谢您的帮助。
担。