为什么正斜杠转换为连字符/破折号

时间:2014-11-30 16:10:06

标签: php filenames slash content-disposition

我知道我们应该替换前向斜杠,例如爆炸路径并使用数组的最后一个元素作为文件名。

但是为什么在使用

时将fordward斜杠转换为连字符/破折号
header('Content-Disposition: attachment; filename="'.$local_file.'"'); 

$local_file类似于/file

下载的文件的文件名为-file

这种行为是在某处描述的吗?

rfc论文没有提到这个,或者是这样吗? http://www.faqs.org/rfcs/rfc2183.html

1 个答案:

答案 0 :(得分:3)

这是特定于客户的。大多数浏览器只会丢弃任何路径/前缀。但转码正斜率就像声音一样。

在RFC2616,http://www.w3.org/Protocols/rfc2616/rfc2616-sec19.html,第19.5.1节

中提到了这一点
  

接收用户代理不应该尊重filename-parm参数中存在的任何目录路径信息,这是目前唯一被认为适用于HTTP实现的参数。文件名应该只被视为终端组件   网络工作组,R。Fielding等,(c)互联网协会(1999)

当然,理由是,出于安全原因,不应将HTTP有效负载提取到任何预定义路径。