【问题标题】:Prevent chrome from caching header redirects防止 chrome 缓存标头重定向
【发布时间】:2017-03-09 12:22:40
【问题描述】:

我有几个视图,如果用户未登录或处于其他状态(结帐视图中的购物车不为空),我会将他重定向到其他地方,我为此编写了一个方法,但谷歌浏览器缓存了我的重定向。

示例:如果用户尝试结帐并因为购物车是空的而被重定向,那么下一次,即使他的购物车已满,他也会再次被重定向。只有在手动进入 Chrome 的设置并清除缓存和浏览历史记录后才能解决。

我的方法:

    public static function redirect($url, $statusCode = 302, $cacheHeader = true)
{
    if( $cacheHeader === false ) {
        header("Cache-Control: no-cache, must-revalidate");
    }

    header('Location: ' . $url, true, $statusCode);
    exit();
}

调用方法:

EkerbaseUtilities::redirect(Ekerbase::getRoot() . '#showcart', 307, false);

我试过307、303等状态,结果都一样。您还可以看到,我尝试设置 no-cache 标头,但也没有执行任何操作。

我尝试的其他方法是在 url 中设置 ?unique()=1,用于始终更改但仍得到相同结果的参数。

请注意,JS 重定向是不可能的,因为 UX 是该网站的关键。

有什么线索吗? 谢谢,

【问题讨论】:

  • “我尝试的其他方法是在 url 中设置 ?unique()=1,用于始终更改但仍然得到相同结果的参数。” – 它为浏览器之前甚至没有请求过的 URL 获取缓存重定向是相当不可能的……您在哪个 URL 上尝试过 - 用户在重定向之前发送到的原始 URL?
  • “如果用户尝试结账并因为购物车是空的而被重定向” - 首先为什么要这样做?让他们去结账页面,并告诉他们没有东西可以结账,因为他们的购物车是空的。如果您想进一步指导他们现在应该/可以做什么,请提供其他链接,例如“继续购物”……

标签: php google-chrome browser-cache


【解决方案1】:

问题出在我的 .htaccess 中,我只需要设置:

Header set Cache-Control max-age=0

彻底解决了这个问题。

【讨论】:

    猜你喜欢
    • 2014-07-16
    • 1970-01-01
    • 2015-07-28
    • 2019-05-27
    • 2020-11-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-09-28
    相关资源
    最近更新 更多