检测 URL 是否为文件下载

Detecting if a URL is a file download

如何检测给定的 URL 是否是要下载的文件?

我遇到了 content-disposition header,但它似乎不是 http 1.1 直接的一部分。

是否有更标准的方法来检测对给定 URL 发出的 GET 请求的 response 是否实际上是要下载的文件 to/can?

也就是说响应不是 html 或 json 或任何类似的东西,而是像图像、mp3、pdf 文件等?

HTTP 是一种传输协议 - 这与硬盘驱动器存储布局截然不同。 "file" 的概念在 HTTP 中根本不存在。您的计算机硬盘驱动器所包含的实际 paper-and-cardboard "files" 与办公文件系统中的实际内容一样。

无论您怎么想,HTTP 消息或 URL 都在说响应内容不必来自任何计算机文件,也不必由收件人存储在一个文件中。

对 HTTP 中任何 GET 消息的响应始终可以是 "downloaded",方法是发送另一个具有相同 URL 的 GET 请求(在 [=19 的情况下,可能还有其他 headers =].1 变体)。这内置于 GET 消息的定义中,与文件无关。

我最终使用 content-type 来确定它是 html 文件还是位于给定 URL.[=12 的另一端的其他类型的文件=]

我正在使用 content-disposition header 内容来检测原始文件名是否存在,因为 header 并非随处可用。

是否可以检查文件扩展名?对不起,我不能在不了解更多的情况下展开这么多,但我想如果 HTML 没有足够的功能,你可以考虑使用 PHP 来实现这个?