如何找出Web服务器显示的默认页面的名称?
我在Java应用程序中通过I/O流式传输下载各种文件。只要我有完整的URL路径(包括文件名),接收并保存这些文件就行得通,但我怎样才能找到某个域的索引文件的名称(例如Apache的DirectoryIndex
中定义的)? HTTP标头不提供此信息,URLConnection
方法也不提供此信息。如何找出Web服务器显示的默认页面的名称?
非常感谢!
很好
S.
回答:
据我所知,应该没有检索此信息的方式。 HTTP规范没有提供,我认为这不是一件坏事。您的客户请求URL“/”,这取决于Web服务器如何处理,没有义务返回文件名。
这也是值得指出的(我敢肯定,你知道的,但以防万一),仅仅因为一个URL看起来像/somedir/somefile.html
,但这并不意味着这是属下的实际文件。它可以通过代理服务器到另一个主机,mod_rewrite等 - 换句话说,这个名字是任意的,并且不一定与磁盘上的物理名称有任何关系。
总之,我认为你最好的选择是选择默认的文件名,例如index.html
这些情况下坚持下去。
回答:
唯一的出路是:
- 检查内容处理标头,并用它来生成文件名。如果服务器正在提供一个文件,它会设置这个头文件。例如。 http://server:port/DownLoadServlet URL可能会将此标头设置为“name.pdf”。
- 如果缺少此标题,请使用Heuristics生成文件名。这是浏览器用于生成文件名的文件,如Doc [10] .pdf Doc [12] .pdf等。
- 使用内容类型标头(如果可用)猜测文件扩展名。
以上是 如何找出Web服务器显示的默认页面的名称? 的全部内容, 来源链接: utcz.com/qa/258906.html