php – 如何在ESI中设置cookie:include脚本?

前端之家收集整理的这篇文章主要介绍了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

When an ESI template is processed,a
separate request will need to be made
for each include encountered.
Implementations may use the original
request’s headers (e.g.,Cookie,
User-Agent,etc.) when doing so.
Additionally,response headers from
fragments (e.g.,Set-Cookie,Server,
Cache-Control,Last-Modified) may be
ignored,and should not influence the
assembled page.

您可以尝试在javascript set-cookie脚本中转换set-cookie标头吗?这可以包括在身体里……

原文链接:https://www.f2er.com/php/137668.html

猜你在找的PHP相关文章