在CodeIgniter 4中设置标头

iqxoj9l9  于 2022-12-07  发布在  其他
关注(0)|答案(2)|浏览(118)

嘿伙计们。只是需要一个帮助!!!当我在使用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中它不起作用。任何帮助都将不胜感激。

c6ubokkw

c6ubokkw1#

你不需要删除Cache-Control并使用“native”头重新赋值。我不推荐这种方式,除非你确切地知道你在做什么,并且你应该适应codeigniter或任何其他框架中的响应机制的执行流,以避免必须沉重的500个错误之一。
同样,在你的主代码中,你可能会一次又一次地覆盖缓存控制的值。
如果您处理相同的头名称CI 4提供特殊的方法。您设置头名称和值,然后您学习的值,你需要多少。使用分号只有当你完成学习值,因为你的风险覆盖旧值,这是错误的代码,请遵循文档
您必须像这样更改代码:
1.对于相同的标头名称,请使用appendHeader方法
$this-〉响应-〉setHeader('缓存控制','无缓存')

->appendHeader('Cache-Control', 'exemple .. post-check=0, pre-check=0...')

->appendHeader('Cache-Control', 'option 2')

->appendHeader('Cache-Control', 'option 3');

1.对于其他标头:
$this-〉response-〉setHeader('上次修改时间',gmdate(“D,d M Y H:i”).'GMT')

->setHeader('Header-Name-1', 'headear value')

->setHeader('Header-Name-2', 'headear value')

->setHeader('Header-Name-3', 'headear value')

->setHeader('Header-Name-4', 'headear value;');
kq0g1dla

kq0g1dla2#

最后我得到了解决方案,它对我来说工作得很好。我刚刚把这些行放进了BaseController。

$response->removeHeader('Cache-Control');

header("Expires: Mon, 26 Jul 1997 05:00:00 GMT");
header("Cache-Control: no-cache");
header("Pragma: no-cache");

相关问题