我有一个网页链接指向可下载的文件。例如:
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?
3条答案
按热度按时间uqdfh47h1#
查找类似parameter的文件名?
任何url都可以在请求时用文件响应。
在您请求url之前,您无法知道它将响应什么。
inn6fuwd2#
在http中,url永远不会指向文件;它们标识资源,当您“取消引用”该url(即发出get请求)时,您将获得该资源的表示。
用户代理是否选择将该表示存储为文件是其自己的选择。如何处理表示由内容类型指导。
您可以使用
HEAD
请求。pdf文档应使用application/pdf
但也有一些其他类型。大多数浏览器倾向于节省时间application/octet-stream
默认情况下,作为文件(内容类型协商也有一些微妙之处。)在java中,您可以使用如下方式发出head请求:
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数据。