【问题标题】:PHP headers not working before a location headerPHP 标头在位置标头之前不起作用
【发布时间】:2018-06-13 21:17:31
【问题描述】:

在我的网络应用程序中,我希望用户下载页面上的一些信息并在之后重定向。

<?php 
 header('Content-Description: File Transfer');
    header('Content-Type: text/force-donwload');
    header('Content-disposition: attachment; filename=Your_Fibble_Password.txt');
    header('Content-Length: '.strlen($password));
    header('Cache-Control: must-revalidate, post-check=0, pre-check=0');
    header('Expires: 0');
    header('Pragma: public');
    echo $password;
    header('location:./');
 ?>

所以这里的位置标头有效并且页面被重定向
但是上面的文件传输标头不起作用。
注意:我不能使用退出,因为我有一些代码在它下面执行。

【问题讨论】:

  • header('Content-Type: application/octet-stream'); 尝试替换你的,反正有错字,重定向用户后你不应该尝试运行代码
  • @smith 我在标题之前运行代码
  • @smith 它也不起作用
  • 好的,再看一遍,你不能下载文件和重定向(标题位置)它的一个或另一个
  • @smith 好的,知道了。有什么想法可以用位置标头做我想做的事情吗?

标签: php header


【解决方案1】:

据我所知,这是不可能的。技术限制是:“您不能在内容之后发送标头”,因此,在这种情况下,您将发送密码以下载(以 txt 格式文件),然后您尝试发送更多标头以指示重定向。 也许您可以从前端应用程序模拟这种行为,在 javascript 中执行 document.location。

【讨论】:

  • 你想告诉我如何用js或jquey来做吗?
  • 好的,一位stackoverflow用户解释了如何做到这一点,你可以看看johnculviner.com/…
  • 对不起,我不是在找那个。我实际上希望用户只下载一个文本文件而不将其存储在服务器上,因为许多用户将使用 不同的内容 下载它
  • 该链接是有关如何解决问题的示例,您可以动态下载所需的任何内容,而无需在服务器中存储一个文件...例如,ID为123a的用户要求下载他的密码,所以,该用户将调用 /download/password/123a 并且后端理解需要下载用户 123a 的密码文件
  • 我明白了。感谢您的回答,这就是我想要的 (ourcodeworld.com/articles/read/189/…)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-07-28
  • 2011-04-02
  • 2012-08-20
  • 2016-08-21
相关资源
最近更新 更多