内容处置与302重定向(Content-Disposition with 302 redirect)

2019-06-25 17:03发布

这是工作昨晚,但我必须小心改变了一些东西,因为它不是现在。

我所要做的应该是从这些标题明确:

Content-Disposition: attachment;filename=english_customizable.xml
Location: http://tortoisewrath.com/files/2.xml

然而,当发送此头Content-Disposition部分不重定向后工作。

...为什么?

Answer 1:

你正在试图做是不可取的检查这个问题; 头位置+内容处理

内容处置+ Location头

但你可以做到这一点,以使其工作你必须在发送之前缓冲你的整个响应。 您可以使用输出缓冲做到这一点

  • http://php.net/manual/en/book.outcontrol.php

否则,浏览器可以解释的Location被下载的文件前头。 这是粗略无论哪种方式,所以你不应该想这样做。

请注意 ,强迫“另存为”使用Content-Disposition: attachment; 将确保客户不走/随时随地导航,所以下面对自己的方法应该是在任何情况下的罚款。

流媒体在PHP文件

如果只想引用一个人谁拥有他在正确的地方大脑 :

// To use header() with 'content-type', why don't you use mime_content_type() function rather than checking the type on the basis of extension? 
// Example code: 

<?php 
$file="test.docx"; 
header("Pragma: public"); 
header('Content-disposition: attachment; filename='.$file); 
header("Content-type: ".mime_content_type($file)); 
header('Content-Encoding: identity'); 
ob_clean(); 
flush(); 
readfile($file); 
?> 

// Use $file to map to whichever type of file. 
// Note: the mime types should already be defined in apache settings

来源: http://www.php.net/manual/en/function.header.php#107581

请注意,原来的答案使用Content-Transfer-Encoding ,它实际上并不在HTTP存在。 该源下面的评论解释了它: http://www.php.net/manual/en/function.header.php#107044



文章来源: Content-Disposition with 302 redirect