如何筛选特定类型的文件/响应的url?

5cnsuln7  于 2021-07-09  发布在  Java
关注(0)|答案(3)|浏览(281)

我有一个网页链接指向可下载的文件。例如:
http://www.mysite.com/download.php?file=downloads/programming/various/ebook.pdf
但它也可以有如下导航链接:
http://www.mysite.com/index.php
http://www.mysite.com/index.php?category=programming
http://www.mysite.com/index.php?section=programming&category=various
如何确定url是否指向第一个链接中的文件?或者反过来,过滤掉不合适的URL?

uqdfh47h

uqdfh47h1#

查找类似parameter的文件名?
任何url都可以在请求时用文件响应。
在您请求url之前,您无法知道它将响应什么。

inn6fuwd

inn6fuwd2#

在http中,url永远不会指向文件;它们标识资源,当您“取消引用”该url(即发出get请求)时,您将获得该资源的表示。
用户代理是否选择将该表示存储为文件是其自己的选择。如何处理表示由内容类型指导。
您可以使用 HEAD 请求。pdf文档应使用 application/pdf 但也有一些其他类型。大多数浏览器倾向于节省时间 application/octet-stream 默认情况下,作为文件(内容类型协商也有一些微妙之处。)
在java中,您可以使用如下方式发出head请求:

HttpURLConnection connection = (HttpURLConnection) url.openConnection();
connection.setRequestMethod("HEAD");
// Check connection.getContentType();
sgtfey8w

sgtfey8w3#

继续你编辑的问题:如果你想过滤掉文件,
筛选 Content-Type 标题。
下面是常见mime类型的非正式列表
您可以检查响应头以确定响应是否符合,例如 application/pdf 但是您不能仅仅从url/uri本身来做出这个决定。
实际上,我可以构造一个响应url的web应用程序 http://myapp.com/test.pdf 带收割台 Content-Type: image/jpeg 和jpg的数据。
另外,我可以通过发送标题来打破局面 Content-Type: image/jpeg 以及pdf格式的数据。
假设它不是故意破坏的(正如我上面提到的),那么您可以依赖于响应。
注意内容本身是否偏离 Content-Type 头,然后你可以有一个漏洞发生。这就是iphone越狱的方式:通过处理格式错误的pdf数据。

相关问题