【问题标题】:How to find out the name of the default page displayed by a webserver?如何找出网络服务器显示的默认页面的名称?
【发布时间】:2011-07-15 03:06:27
【问题描述】:

我正在通过我的 Java 应用程序中的 I/O 流下载各种文件。只要我有一个包含文件名的完整 URL 路径,接收和保存这些文件就可以很好地工作,但是我怎样才能找到一个域的索引文件的名称(例如,Apache 的 DirectoryIndex 中定义的)? HTTP 标头不提供此信息,URLConnection 方法也不提供。

非常感谢!

身体健康
S.

【问题讨论】:

    标签: java http-headers urlconnection directoryindex


    【解决方案1】:

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

    还值得指出的是(我相信你已经意识到了,但以防万一)仅仅因为 URL 看起来像 /somedir/somefile.html,并不意味着它是 实际的 正在提供的文件。它可以通过代理服务到另一个主机,mod_rewrite 等 - 换句话说,名称是任意的,不一定与磁盘上的物理名称有任何关系。

    简而言之,我认为您最好的选择是选择一个默认文件名,例如index.html 对于这些情况并坚持下去。

    【讨论】:

    • 谢谢,菲尔。我以某种方式期望我需要这样的解决方案。
    【解决方案2】:

    唯一的出路是:

    1. 检查 Content-Disposition 标头并使用它生成文件名。如果服务器正在提供文件,它将设置此标头。例如。 http://server:port/DownLoadServlet URL 可能会将此标头设置为将名称指示为“statement.pdf”。
    2. 如果缺少此标头,请使用启发式方法生成文件名。这是浏览器生成文件名的方法,例如 Doc[10].pdf Doc[12].pdf 等。
    3. 使用内容类型标头(如果可用)来猜测文件扩展名。

    【讨论】:

      猜你喜欢
      • 2015-03-09
      • 1970-01-01
      • 2017-10-01
      • 1970-01-01
      • 2019-03-18
      • 1970-01-01
      • 2013-12-21
      • 2013-11-03
      • 1970-01-01
      相关资源
      最近更新 更多