gpt4 book ai didi

symfony - 在 Symfony2 中重定向和阻止缓存

转载 作者:行者123 更新时间:2023-12-04 22:32:35 27 4
gpt4 key购买 nike

我正在这样做:

domain.com/route-name/?do-something=1

..它设置了一个cookie,然后使用302重定向重定向到这个:
domain.com/route-name/

无论页面查看如何,它都允许执行操作(cookie 为用户存储设置)。

我正在使用默认的 Symfony2 反向代理缓存,一切都很好,但我需要阻止上述两个请求进行缓存。

我正在使用它来执行重定向:
// $event being a listener, usually a request listener

$response = new RedirectResponse($url, 302);
$this->event->setResponse($response);

我试过这样的事情,但似乎没有任何效果:
$response->setCache(array('max_age' => 0));
header("Cache-Control: no-cache");

那么如何阻止它缓存这些页面呢?

最佳答案

您必须确保使用 RedirectResponse 发送以下 header (如果设置了 GET 参数)以及路由的常规响应:

Cache-Control: private, max-age=0, must-revalidate, no-store;

像这样实现你想要的:
$response->setPrivate();
$response->setMaxAge(0);
$response->setSharedMaxAge(0);
$response->headers->addCacheControlDirective('must-revalidate', true);
$response->headers->addCacheControlDirective('no-store', true);

private 很重要,但在昏迷的答案中却没有。

不同之处在于,使用 Cache-Control: private 不允许代理缓存通过它们的数据。

关于symfony - 在 Symfony2 中重定向和阻止缓存,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16753142/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com