Http 我如何判断访问URL是否会下载某个mimetype文件?

Http 我如何判断访问URL是否会下载某个mimetype文件?,http,header,mime-types,Http,Header,Mime Types,我正在构建一个应用程序,告诉我访问URL是否会让用户下载某个mimetype文件。 我的问题是:哪些信息(如标题字段)可以用来实现这一点 我正在考虑发送一个HEAD请求,并查找contentdisposition和contenttypeheader字段。但是攻击者可能就在这个字段中,由于模仿,我的浏览器仍然会保存文件 是否有办法在不下载文件的情况下获取此信息(这将导致不必要的流量。) 编辑: 我想开发一个以URL作为输入的应用程序。 输出应该是三件事: 1:访问URL是否会使浏览器保存(“下载”

我正在构建一个应用程序,告诉我访问URL是否会让用户下载某个mimetype文件。 我的问题是:哪些信息(如标题字段)可以用来实现这一点

我正在考虑发送一个HEAD请求,并查找contentdisposition和contenttypeheader字段。但是攻击者可能就在这个字段中,由于模仿,我的浏览器仍然会保存文件

是否有办法在不下载文件的情况下获取此信息(这将导致不必要的流量。)

编辑: 我想开发一个以URL作为输入的应用程序。 输出应该是三件事:
1:访问URL是否会使浏览器保存(“下载”)Web服务器交付的文件?
如果1:
2:此文件的mimetype是什么?
3:此文件的文件名是什么?

示例:
使用浏览器访问的url保存文件game.exe
我如何判断(下载文件时不会造成巨大流量)url将:1:让我下载文件2:应用程序/octet流3:game.exe


我已经知道如何发出head请求。但是我真的可以信任Content-Disposition和Content-Type头字段吗?我观察到响应中没有包含Content-Disposition字段,我的浏览器仍然保存了该文件。这会使我的应用程序认为URL是清晰的,而不是清晰的。

这可以使用
cur来完成l
,使用
-I
选项(仅获取标题),如下所示:

curl -I https://www.irs.gov/pub/irs-pdf/f1040.pdf

这可以通过使用
curl
-I
选项(仅获取标题)来完成,如下所示:

curl -I https://www.irs.gov/pub/irs-pdf/f1040.pdf

如果mime类型出现在内容类型标头中,浏览器不会猜测该类型(请参阅)

因此,您可以依赖于是否存在浏览器猜不到的内容处置标题和/或内容处置标题

现在,为了检测您得到的是什么,最好的方法是请求文件的头(第一行/几个字节),并从中解密神奇的值。(例如,确定文件是什么的*NIX方法) 这比依赖文件扩展名更可靠,风险更小


但是,如果您需要一种傻瓜式的方法来确定文件是否会被下载,我不知道有一种方法。

如果mime类型出现在内容类型头中,浏览器不会猜测mime类型(请参阅)

因此,您可以依赖于是否存在浏览器猜不到的内容处置标题和/或内容处置标题

现在,为了检测您得到的是什么,最好的方法是请求文件的头(第一行/几个字节),并从中解密神奇的值。(例如,确定文件是什么的*NIX方法) 这比依赖文件扩展名更可靠,风险更小


但是,如果你需要一种傻瓜式的方法来确定文件是否会被下载……我不知道有一种方法。

这看起来更像是一个编程问题,而不是一个安全问题。你说的“下载”是什么意思?你说的“制作/让你下载”是什么意思"? 你是说自动下载文件吗?你看过浏览器知道文件名之类的东西吗,因为那是文件名。我的印象是这里有更多的上下文,或者您还没有解释所有内容。如果单独的请求(例如来自JavaScript或重定向)实际启动下载,会怎么样?编辑了我的问题。我认为这不应该转移到stackoverflow,因为我不是在问编程问题。我想讨论的是,是否可以仅信任http头字段来确保用户在访问URL时不会保存/下载某个mimetype文件。这看起来更像是一个编程问题,而不是安全问题。“下载”是什么意思?你说的“制作/让你下载”是什么意思?你是说自动下载文件吗?你看过浏览器知道文件名之类的东西吗,因为那是文件名。我的印象是这里有更多的上下文,或者您还没有解释所有内容。如果单独的请求(例如来自JavaScript或重定向)实际启动下载,会怎么样?编辑了我的问题。我认为这不应该转移到stackoverflow,因为我不是在问编程问题。我想讨论一下,是否可以仅信任http头字段来确保用户在访问URL时不会保存/下载某个mimetype文件。这就是我最初提出安全性问题而不是stackoverflow问题的原因。我已经知道如何执行头请求。我的问题是,对于恶意网站来说,那些headerfields可能会撒谎,而浏览器是如此“智能”,它们仍然保存一个文件,而我的应用程序却无法注意到一个文件被传递了。这就是为什么我最初提出的问题是关于安全性,而不是stackoverflow。我已经知道如何执行头请求。我的问题是,对于恶意网站,这些域名可能会撒谎,而浏览器是如此“智能”,它们仍然保存一个文件,而我的应用程序却无法注意到一个文件被传递了。