php – 如何在ESI中设置cookie:include脚本?
我有一个基本的
PHP页面通过Varnish加载,其中包含一个ESI回调服务器来设置cookie. cookie是通过域访问等设置的,但是当通过ESI调用时,cookie永远不会被设置.如果直接访问ESI include路径,则cookie设置没有问题.我甚至设置了我的Varnish配置永远不会缓存任何东西,认为VCL可能会杀死cookie.
这个… <esi:include src="/init.php?<?=http_build_query($_GET); ?>"></esi:include> ……包括这个…… <?php header("Cache-Control: no-cache,must-revalidate"); header("Expires: Sat,26 Jul 1997 05:00:00 GMT"); setcookie('superman','clark kent','/','.whatever.com'); ?> 我是Varnish和ESI的新手,所以我开始怀疑这是否是一个已知的限制(使用ESI或使用Varnish的ESI实现),但我无法在网上找到任何关于我的问题的讨论.
一个有趣的问题,在(
Setting Cookies via ESI:include,how?)之前被问过但没有回答过.我认为你不能这样做.通过ESI-include,ESI处理器发出单独的请求,并从主体而不是标头中替换部件.为了使您首选的set-cookie行为正常工作,ESI规范应指定如何“合并”所有set-cookie标头.
参见ESI规范的第六章:http://www.w3.org/TR/esi-lang
您可以尝试在javascript set-cookie脚本中转换set-cookie标头吗?这可以包括在身体里…… (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |