【问题标题】:Serving file:// files to users向用户提供 file:// 文件
【发布时间】:2014-06-09 09:42:02
【问题描述】:

目前我正在为将在我们公司使用的网络驱动器构建一个本地搜索引擎。

搜索引擎建立在 Solr 和 Tika 之上。我已经建立了一个索引器,它通过网络为 Samba 共享建立索引,它工作得很好,并且索引了配置文件中给出的所有目录。然而,这并不真正相关。

我们目前遇到的问题是,连接到 Solr 并提供搜索结果的 Web 界面将尝试提供本地 file:// 文件,这些文件是指向具有绝对路径或 Samba 路径的文件的链接。但是 Google Chrome 等浏览器当然不允许提供 file:// 的服务。 Chrome给出的错误是:

Not allowed to load local resource: file:///name/to/file.pdf

这是显而易见且合乎逻辑的,但是我想解决该问题并向我们的用户提供“本地”文件。或者至少打开一个具有给定路径的资源管理器窗口。

我想知道这是否可能,或者是否有可用的解决方法?将为这些文件提供服务的服务器正在 Apache 或 Tomcat 上运行(没关系)。

【问题讨论】:

    标签: security google-chrome solr cross-domain


    【解决方案1】:

    如果不使用特定于浏览器的插件,尽管打开 file:// 似乎几乎是不可能的,我通过指定自定义 URI 处理程序和 Windows 特定应用程序创建了一个解决方法,该应用程序将使用给定目录打开 explorer.exe .

    到目前为止,这不是我问题的理想答案,但我认为对于 Intranet 搜索应用程序来说这是一个不错的解决方法。

    【讨论】:

      【解决方案2】:

      从可用性和安全性的角度来看,将文件从您的应用程序流式传输到浏览器是一个更好的主意。

      通过为流分配 MIME 类型,用户的浏览器可以决定如何最好地打开文件并将其显示给用户。

      通过从您的应用程序流式传输,可以保持对数据的控制。文件在您的服务器上的位置不会泄露,并且很容易实现正确的身份验证、授权和审核。

      假设 Java 基于您对 Solr 和 Tika 的使用:

      http://www.java-forums.org/blogs/servlet/668-how-write-servlet-sends-file-user-download.html

      【讨论】:

      • 虽然这是一个很好的建议。我想向用户公开文件的位置,并明确希望用户可以打开这个目录。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2016-08-15
      • 1970-01-01
      • 1970-01-01
      • 2011-04-12
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多