【问题标题】:Generated xml file is harmful for computer?生成的 xml 文件对计算机有害吗?
【发布时间】:2013-03-07 11:50:26
【问题描述】:

我做了一个 xml 文件并通过这些标题强制下载它:

header('Content-disposition: attachment; filename="export.xml"');
header('Content-type: application/xml; charset=utf8');
readfile('export.xml');

但是在下载之前我看到一个对话框说这个文件可能对我的电脑有害?如何摆脱这个对话框?也许我的标题错了?

upd好吧,什么都做不了,我在我的测试主机上做了一个测试,你可以在这里查看:site with generation link,以及一个 xml 文件原样:export.xml

【问题讨论】:

  • 您的浏览器是否对所有要下载的文件显示相同的消息?
  • 不,就这样,我也可以通过浏览器中的真实网址毫无风险地打开他。
  • php force download xml 的可能副本
  • 我从中取了一个标题。但是没有关于有害对话的说法。
  • 看来我需要一个有风险的 chrome 可下载文件的白名单。

标签: php xml header http-headers header-files


【解决方案1】:

尝试将application/xml 更改为text/xml。可能您的浏览器认为application 表示可执行。

【讨论】:

  • 其实是之前,我还以为浏览器不喜欢text/xml这个头,没区别,还是这个对话框。
【解决方案2】:

试试这个:

<?php 
header('Content-disposition: attachment; filename="export.xml"');
header('Content-type: "text/xml"; charset="utf8"');
readfile('export.xml');
?>

【讨论】:

    【解决方案3】:

    注意:这并不能解决您的问题,但它确实解决了我在发出该通知的计算机上遇到的问题(windows、chrome、apache 网络服务器、PHP 5.4.10)。我把它留在这里给未来的访客。

    某些浏览器不仅会查找标头,还会查找 URL 中的“文件名”。

    例如,如果您下载一个 包含 XML 的 PHP 文件,浏览器可能会将其识别为危险文件(因为它可以在您的系统上执行,或者不在某些白名单内或其他) :

    http://example.com/xml-download.php
    

    一个简单的解决方案是使该文件不再以.php 结尾,例如通过添加?

    http://example.com/xml-download.php?
    

    然后继续以这种方式发出文件名:

    http://example.com/xml-download.php?export.xml
    

    (最后一个不是必需的,但对于一些较旧的浏览器尤其有用)

    【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-09-10
    • 2011-09-02
    • 2012-08-17
    • 1970-01-01
    • 2018-11-24
    • 1970-01-01
    • 2023-03-30
    • 1970-01-01
    相关资源
    最近更新 更多