嘿伙计们。只是需要一个帮助!!!当我在使用ci 3所以我面临的问题时,用户点击浏览器返回按钮,这是显示“重新提交表单”,所以我解决了这个问题后,在ci 3设置标题。现在我升级我的网站ci 3到ci 4,我再次面临同样的问题。有人能plz转换在ci 4这个代码吗?
控制器结构中的CI 3代码
$this->output->set_header('Last-Modified:' . gmdate('D, d M Y H:i]') . 'GMT');
$this->output->set_header('Cache-Control: no-cache, must-revalidate');
$this->output->set_header('Cache-Control: post-check=0, pre-check=0', false);
$this->output->set_header('Pragma: no-cache');
基本控制器中的CI 4代码
$response->setHeader('Last-Modified',gmdate("D, d M Y H:i").'GMT');
$response->setHeader('Cache-Control', 'no-store');
$response->setHeader('Cache-Control', 'no-cache');
$response->setHeader('Cache-Control', 'must-revalidate');
$response->setHeader('Cache-Control', 'post-check=0');
$response->setHeader('Cache-Control', 'pre-check=0');
$response->setHeader('Pragma','no-cache');
$response->setHeader('Cache-Control', 'no-cache');
在CI 4中它不起作用。任何帮助都将不胜感激。
2条答案
按热度按时间c6ubokkw1#
你不需要删除Cache-Control并使用“native”头重新赋值。我不推荐这种方式,除非你确切地知道你在做什么,并且你应该适应codeigniter或任何其他框架中的响应机制的执行流,以避免必须沉重的500个错误之一。
同样,在你的主代码中,你可能会一次又一次地覆盖缓存控制的值。
如果您处理相同的头名称CI 4提供特殊的方法。您设置头名称和值,然后您学习的值,你需要多少。使用分号只有当你完成学习值,因为你的风险覆盖旧值,这是错误的代码,请遵循文档
您必须像这样更改代码:
1.对于相同的标头名称,请使用appendHeader方法
$this-〉响应-〉setHeader('缓存控制','无缓存')
1.对于其他标头:
$this-〉response-〉setHeader('上次修改时间',gmdate(“D,d M Y H:i”).'GMT')
kq0g1dla2#
最后我得到了解决方案,它对我来说工作得很好。我刚刚把这些行放进了BaseController。