4

我有一个 logout.php 页面,它结束了用户的会话并且运行良好,并且执行以下操作:

session_start(); session_unset(); session_destroy();

我刚刚在使用 Safari 进行测试时注意到,当您注销时,您可以单击后退按钮返回到需要身份验证但没有提示的上一页。如果不输入导航,您无法离开此页面,但它不应该首先显示上一页。

到目前为止,在我的测试中,这只是 Mac OS X 上 Safari 的一个问题,还有许多其他关于此的报告,但我找不到解决方案:

http://www.experts-exchange.com/Web_Development/Web_Languages-Standards/PHP/Q_23702691.html

我希望能够使用 Safari 的后退按钮禁用这种行为——这让我感到惊讶。

谢谢,史蒂夫

4

1 回答 1

2

确保您服务的任何需要身份验证的页面都使用合适的缓存控制标头发送。该页面正在从浏览器缓存中显示,通过提供明确禁止缓存的缓存控制,您应该能够阻止它。

来自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/

于 2010-06-09T14:05:38.887 回答