是否有一种方法可以使BaseX服务于HTML文档?



是否有一种方法可以使BaseX的HTTP服务器提供存储在数据库中的HTML文档作为原始资源或在文件系统中,具有文本/HTML内容类型,因此它可以在浏览器中显示?

该文档是一个向BaseX执行XHR请求的网页。目前,我通过文件协议在浏览器上加载它。这就需要让Jetty使用CORS头来响应,否则同源策略会阻止XHR请求。

然而,这是一个维护负担。BaseX的每次更新都需要手动获取添加CORS头的servlet过滤器的新版本。

我想让BaseX本身服务于HTML文档(并成为源),从而消除跨源请求。

有可能吗?

默认的web.xml(位于BaseXWeb/WEB-INF)已经包含了从/static/ URI下的./static目录提供静态文件的配置:

  <!-- Mapping for static resources (may be restricted to a sub path) -->
  <servlet>
    <servlet-name>default</servlet-name>
    <init-param>
      <param-name>useFileMappedBuffer</param-name>
      <param-value>false</param-value>
    </init-param>
  </servlet>
  <servlet-mapping>
    <servlet-name>default</servlet-name>
    <url-pattern>/static/*</url-pattern>
  </servlet-mapping>

你也可以看一下BaseX DBA,它也作为一个由BaseX托管的web应用程序的示例实现,并使用./static文件夹来存放一些JavaScript文件。

当然,如果需要从另一个目录托管文件,也可以更改默认的web.xml。另一种方法总是将文档作为RAW文件存储在数据库中,并自行为其提供适当的内容类型。由于通过./static文件夹的托管文件绕过RestXQ执行,并由Jetty直接提供这些文件,因此与从BaseX数据库读取文件相比,您可能会获得一些性能改进。第三种解决方案可能是在BaseX前面托管一个反向代理来为静态文件提供服务(这通常是在生产环境中完成的),但这会增加开发中的一些管理开销。

相关内容

最新更新