我有一个 logout.php 页面,它结束用户的会话并且运行良好,并执行以下操作:
会话开始();
session_unset();
session_destroy();
我刚刚在使用 Safari 进行测试时注意到,当您注销时,您可以单击后退按钮返回到需要身份验证但不会提示的上一页。您无法在不进入导航的情况下离开此页面,但它不应该首先显示上一页。
到目前为止,在我的测试中,这只是 Mac OS X 上 Safari 的问题,还有许多其他关于此问题的报告,但我找不到解决方案:
http://www.experts-exchange.com/Web_Development/Web_Languages-Standards/PHP/Q_23702691.html
我希望能够通过 Safari 的后退按钮禁用此行为 - 令我惊讶的是,这种情况首先发生。
谢谢,
史蒂夫
确保您提供的任何需要身份验证的页面都使用合适的缓存控制标头发送。该页面是从浏览器缓存中显示的,通过提供明确禁止缓存的缓存控制,您应该能够阻止这种情况。
From http://php.net/manual/en/function.header.php
<?php
header("Cache-Control: no-cache, must-revalidate"); // HTTP/1.1
header("Expires: Sat, 26 Jul 1997 05:00:00 GMT"); // Date in the past
?>
特别是对于 Safari,有一些关于缓存和卸载事件的讨论,您可以使用它们来避免缓存。一般来说,WebKit 似乎在缓存方面确实存在一些复杂性。
http://webkit.org/blog/427/webkit-page-cache-i-the-basics/
http://webkit.org/blog/516/webkit-page-cache-ii-the-unload-event/
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)