【问题标题】:What is the header Content type suppose to do?标题内容类型应该做什么?
【发布时间】:2022-01-22 03:54:31
【问题描述】:

所以我有这个 ASP.Net 应用程序,我希望允许客户端可以选择下载 xlsx 文件,我使用 HttpContext.Response 设置内容类型“application/xlsx”和 Content-Disposition 集扩展名为 .xlsx 的文件名,下载正常。

如果我将文件名更改为 .pdf,则文件会以 pdf 格式下载,当我检查开发人员工具网络响应时,内容类型为“application/xlsx”,在另一个测试中,我将文件名更改为 .png 和该文件已作为图像下载(它不起作用,但显示为图像)

那么内容类型应该做什么,它是否带来某种安全性我如何确保用户只能下载与内容类型关联的文件?

我正在使用 response.BinaryWrite()

【问题讨论】:

    标签: asp.net-mvc webforms


    【解决方案1】:

    内容类型表示通过 http 传输的内容类型,无论内容名称如何。例如,您已经测试过,您可以传输一个 pdf 文件,将其命名为 .png 文件。

    浏览器或操作系统将名称为 .png 的文件作为图像呈现给您。另一个软件会将具有 .png 名称的 pdf 文件视​​为 pdf 文件。

    下载完成后文件名很重要。但是处理下载的软件(在这种情况下是网络浏览器)实际上可能需要知道原始媒体类型。而且您可能想要编写客户端代码,这些代码需要知道从服务器传输的文件类型,而不管文件名如何。

    【讨论】:

    • 我明白了,有没有办法确保文件只是 pdf,如果不是,就阻止下载?,我只需要在服务器上检查文件的扩展名?
    • 只有在您使用一些自定义下载机制时才可以阻止下载。如果您只想使用 URL 并希望浏览器处理下载并提示用户相同或打开文件,那么您不能阻止它。
    猜你喜欢
    • 2013-07-29
    • 2011-10-06
    • 1970-01-01
    • 1970-01-01
    • 2022-12-30
    • 2011-02-23
    • 1970-01-01
    • 1970-01-01
    • 2013-04-18
    相关资源
    最近更新 更多