我的一项服务(kernel.response 上的事件侦听器)有一个奇怪的问题。
我想在其中设置一些 cookie(我需要 cookie 而不是 session 以与 Symfony1 兼容),但找不到如何..
直到最后我才明白我写的代码是有效的,除非我在其中调试一些东西(比如var_dump
cookie)。
public function onKernelResponse(FilterResponseEvent $event)
{
if (HttpKernel::MASTER_REQUEST == $event->getRequestType()):
$request = $event->getRequest();
$response = $event->getResponse();
var_dump($request->cookies->all());
$response->headers->setCookie(new Cookie('foo', 'bar'));
endif;
}
所以那行不通,我的 cookie 从未在$request->cookies->all()
.
但是,如果我评论该var_dump
行,刷新并取消评论,则 cookie 已设置!
正常吗?为什么 ?在这样的事件中打印会破坏标题吗?!