Mik*_*ynn 8 php cookies varnish edge-side-includes
我有一个基本的PHP页面通过Varnish加载,其中包含一个ESI回调服务器来设置cookie.cookie是通过域访问等设置的,但是当通过ESI调用时,cookie永远不会被设置.如果直接访问ESI包含路径,则cookie设置没有问题.我甚至设置了我的Varnish配置永远不会缓存任何东西,认为VCL可能会杀死cookie.
这个...
<esi:include src="/init.php?<?=http_build_query($_GET); ?>"></esi:include>
Run Code Online (Sandbox Code Playgroud)
......包括这个......
<?php
header("Cache-Control: no-cache, must-revalidate");
header("Expires: Sat, 26 Jul 1997 05:00:00 GMT");
setcookie('superman', 'clark kent', 0, '/', '.whatever.com');
?>
Run Code Online (Sandbox Code Playgroud)
我是Varnish和ESI的新手,所以我开始怀疑这是否是一个已知的限制(使用ESI或使用Varnish的ESI实现),但我在网上找不到任何关于我的问题的讨论.
ivy*_*ivy 13
一个有趣的问题,但之前没有回答过(通过ESI设置Cookies:包括,如何?).我认为你不能这样做.使用ESI-include,ESI处理器会发出单独的请求,并从主体而不是标头中替换部件.为了使您首选的set-cookie行为正常工作,ESI规范应指定如何"合并"所有set-cookie标头.
参见ESI规范的第六章:http://www.w3.org/TR/esi-lang
处理ESI模板时,需要为遇到的每个包含单独的请求.在执行此操作时,实现可以使用原始请求的标头(例如,Cookie,用户代理等).另外,可以忽略来自片段的响应头(例如,Set-Cookie,Server,Cache-Control,Last-Modified),并且不应该影响组装的页面.
你能尝试在javascript set-cookie脚本中转换你的set-cookie标头吗?这可以包括在身体里......
| 归档时间: |
|
| 查看次数: |
3513 次 |
| 最近记录: |