如何找出Web服务器显示的默认页面的名称?

我在Java应用程序中通过I/O流式传输下载各种文件。只要我有完整的URL路径(包括文件名),接收并保存这些文件就行得通,但我怎样才能找到某个域的索引文件的名称(例如Apache的DirectoryIndex中定义的)? HTTP标头不提供此信息,URLConnection方法也不提供此信息。如何找出Web服务器显示的默认页面的名称?

非常感谢!

很好
S.

回答:

据我所知,应该没有检索此信息的方式。 HTTP规范没有提供,我认为这不是一件坏事。您的客户请求URL“/”,这取决于Web服务器如何处理,没有义务返回文件名。

这也是值得指出的(我敢肯定,你知道的,但以防万一),仅仅因为一个URL看起来像/somedir/somefile.html,但这并不意味着这是属下的实际文件。它可以通过代理服务器到另一个主机,mod_rewrite等 - 换句话说,这个名字是任意的,并且不一定与磁盘上的物理名称有任何关系。

总之,我认为你最好的选择是选择默认的文件名,例如index.html这些情况下坚持下去。

回答:

唯一的出路是:

  1. 检查内容处理标头,并用它来生成文件名。如果服务器正在提供一个文件,它会设置这个头文件。例如。 http://server:port/DownLoadServlet URL可能会将此标头设置为“name.pdf”。
  2. 如果缺少此标题,请使用Heuristics生成文件名。这是浏览器用于生成文件名的文件,如Doc [10] .pdf Doc [12] .pdf等。
  3. 使用内容类型标头(如果可用)猜测文件扩展名。

以上是 如何找出Web服务器显示的默认页面的名称? 的全部内容, 来源链接: utcz.com/qa/258906.html

回到顶部