Typo3 11.5中含百分号的like条件判断Cookie失效求助
问题根源在于request.getCookieParams()会自动对Cookie内容做URL解码,你写的gm%22%3Atrue里的%22会被解码成双引号",%3A解码成冒号:,实际Cookie里的对应内容是gm":"true,用原带百分号的字符串自然匹配不到。
给你三个可行的解决方法:
方法1:匹配解码后的字符串
直接用解码后的字符编写匹配规则:
[like(request.getCookieParams()['klaro'], '*gm":"true*')] page.includeJSFooter{ 10 = https://maps.googleapis.com/maps/api/js?key=xxx } [END]
方法2:获取未解码的原始Cookie
使用request.getRawCookieParams()获取未解码的原始Cookie值,这样就能沿用你原来的匹配串:
[like(request.getRawCookieParams()['klaro'], '*gm%22%3Atrue*')] page.includeJSFooter{ 10 = https://maps.googleapis.com/maps/api/js?key=xxx } [END]
方法3:解析JSON格式的Cookie(更可靠)
Klaro的Cookie通常是JSON结构(比如{"gm":true,...}),可以直接解析后判断布尔值,避免字符串匹配的误差:
[request.getCookieParams()['klaro'] && request.getCookieParams()['klaro']->stdWrap.json = gm && request.getCookieParams()['klaro']->stdWrap.json.value = 1] page.includeJSFooter{ 10 = https://maps.googleapis.com/maps/api/js?key=xxx } [END]
内容的提问来源于stack exchange,提问作者user3852729
相关产品推荐
相关产品推荐

