【问题标题】:How does a browser know what to do with a link for downloading not redirecting?浏览器如何知道如何处理下载链接而不是重定向?
【发布时间】:2010-01-29 21:47:56
【问题描述】:

我想知道当您提供的链接实际上是用于下载而不是重定向到另一个页面时,浏览器如何决定要做什么。例如,浏览器如何知道不将您重定向到名为http://domain/Music.mp3 的页面,而只是抛出下载所述文件的选项?当用户请求文件时,浏览器会查看文件的内容类型还是查看 url 中的扩展名?

非常感谢任何帮助。

问候

【问题讨论】:

    标签: hyperlink


    【解决方案1】:

    浏览器查看Content-Type 标头以确定如何处理文件。如果由于某种原因标题不存在,一些浏览器会尝试从扩展名中猜测文件类型,但我通常不会依赖它。

    编辑: 参见。还有this question昨天刚刚发布。

    【讨论】:

      【解决方案2】:

      除了 Content-Type,您的浏览器还将查看名为 Content-Disposition 的 HTTP 标头的内容。这两个头控制的东西如下:

      • 如果 Content-Disposition 设置为“附件”,浏览器将始终显示下载提示,无论浏览器是否能够在内部显示文件。这允许 Web 开发人员指定即使是 HTML 文件或 PDF 等可显示页面也应下载而不是显示。
      • 否则,浏览器将查看 Content-Type 的内容,并确定它是否能够显示内容或是否应该启动下载提示。

      如果您想保证某个特定文件应被视为下载,则不应依赖 Content-Type,因为您不知道用户在其浏览器上拥有什么样的插件 - 它们可能是完美的能够在他们的浏览器中显示任何类型的文件,并且无法单独使用 Content-Type 来确定用户浏览器的行为。

      【讨论】:

        【解决方案3】:

        这取决于很多事情,主要是MIME type。在来自网络服务器的响应中,它包含“Content-Type”行。您的浏览器将查看并执行其默认操作。

        当我访问 HTML 页面时,响应包含:

        Content-Type: text/html\r\n
        

        当您转到.WMA 文件时,响应是:(我只能在我的网络服务器上快速找到一个 .WMA!)

        Content-Type: audio/x-ms-wma\r\n
        

        【讨论】:

          【解决方案4】:

          Apache 发送带有文件的标头,以便浏览器知道如何处理该文件。

          下载的最重要的标题是“内容类型”。它告诉浏览器它是什么类型的文件。如果您没有安装任何可以在浏览器中运行文件的程序(如 quicktime、wmp 或 pdf 阅读器),它将加载下载提示。

          有关标题的更多信息: http://en.wikipedia.org/wiki/List_of_HTTP_headers

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 1970-01-01
            • 2018-07-25
            • 1970-01-01
            • 1970-01-01
            • 2014-09-14
            • 2011-04-17
            • 2021-07-07
            • 1970-01-01
            相关资源
            最近更新 更多