HTTP下载开始后的新位置

时间:2010-06-06 16:36:30

标签: php http nginx

我正在使用X-Accel-Redirect(隐式nginx),Content-Type和Content-Disposition来下载文件,一切都很棒。

我需要完成的是在下载开始后重定向到新位置。

我已经使用Refresh和Location进行了测试,但它不起作用。是否可以使用HTTP 1.1 / nginx?

附录

我正在寻找一种仅限HTTP的方法。没有javascript,没有< meta>。

处理POST表单后开始下载。

3 个答案:

答案 0 :(得分:1)

只要Nginx已经发送了响应,就不可能。因此唯一的方法似乎是从302 Redirect

中引用的Nginx位置返回X-Accel-Redirect

你怎么告诉Nginx这样做?

最好的方法是从应用程序

将自定义标头传递给Nginx(以及XAR)

如何在Nginx中触发处理?

您可以使用变量$http_VARIABLE轻松获取标头的值,因此典型的Nginx配置看起来像

if ($http_your_header) {
  rewrite ^ http://your_redirect redirect;
}

有关详细信息,请参阅Nginx rewrite module documentationNginx HTTP header variable

答案 1 :(得分:0)

<?php

header('refresh:5;url=http://www.google.com/');
header('Content-type: application/pdf');
header('Content-Disposition: attachment; filename="file.pdf"');
readfile('file.pdf');

这将在d / l开始后的5秒内将您重定向到google.com;)

答案 2 :(得分:-1)

我会将原始下载链接更改为在新窗口中打开(target="_blank")并使用javascript重定向。您可以尝试基于此的几种变体。

相关问题