我正在尝试阻止Android缓存重定向的网页。我很成功,但在涉及条形码阅读*的异常情况下有一种失败模式。我很感激帮助了解正在发生的事情。
我的情景是:
(1)将常量网址放在QR码(http://en.wikipedia.org/wiki/QR_code)中,假设它是http://foo.com/bar。
(2)在服务器上,当该URL上的GET到达时,使用缓存控制头重定向,如此(请原谅PHP: - )):
header("Cache-Control: no-store, no-cache, must-revalidate");
header("Expires: Sat, 26 Jul 1997 05:00:00 GMT"); // Date in the past
header("Pragma: no-cache");
header('Location: ' . generateAOneTimeURL(), TRUE, 307 );
(3)此外,当从任何此类一次性URL提供内容时,我在其META标记中使用相同的缓存控制头。
(4)我正在使用Android自己的条码扫描器zxing。这将显示它从条形码中读取的URL,作为用户单击以查看网页的超链接。
(5)如果用户点击Android的后退按钮返回扫描模式并再次扫描相同的条形码,一切正常:当用户再次点击相同的URL时,他们会被重定向到新的一次性URL ,按照预期。
(6)但是,如果用户按下Android的主页按钮,再次点击条形码扫描器应用程序,则忽略上述指令:
(A)用户会在上一个一次性网址
上显示一个页面(B)不对该网址执行另一次GET操作,它只显示该网址之前显示的内容。
我是否遗漏了一个可能对我有帮助的缓存控制指令,或者这是一个特殊的(错误?)如何从同一个应用程序的不同实例处理点击URL?
提前致谢。
添
*重要的是它是一个推出webview的应用程序,而不是它本身就是zxing条形码阅读器。