2014-12-04 27 views
0

以下代码我正在尝试更改浏览器页面。如何在Chrome中下载后重定向

$pdf->Output($pdf_file_name, 'D'); //Downloading PDF 

header("Refresh: 3; url='http://example.com/search-form/'"); 

问题:它在FireFox中工作,但没有在Chrome和IE中工作。

我需要在Chrome/IE中工作。

回答

0

你需要在输出前设置头,所以才这样做的另一种方式圆:

header("Refresh: 3; url='http://example.com/search-form/'"); 

$pdf->Output($pdf_file_name, 'D'); //Downloading PDF 

对于这项工作,您的浏览器需要支持这个头“动作”。这是一种丑陋的黑客攻击,根据请求周期的http定义 - 一个请求 - 一个响应,这种方式根本就不可能(没有适当的客户端支持)。毕竟,发送额外的头文件以在响应旁边启动另一个请求需要客户端支持。 - 毕竟我不想依赖那个解决方案。

固体解决方案将首先访问您想要重定向到的动作,在呈现的视图中放置一个不可见的iframe并将该源指向您的下载动作,以便在动作获取时立即开始。

你可以做更多复杂的设置,包括JavaScript等,更多的重定向到不同的动作,但这很简单。

+0

但它不适用于Chrome – 2014-12-05 18:08:23