有没有办法让 BaseX 的 HTTP 服务器提供 HTML 文档,该文档可以作为原始资源存储在数据库中,也可以存储在文件系统中,具有 text/html 内容类型,以便可以在浏览器中显示?
该文档是一个向 BaseX 发出 XHR 请求的网页。目前,我通过文件协议将其加载到浏览器上。这需要让 Jetty 使用 CORS 标头进行响应,否则同源策略会阻止 XHR 请求。
然而,这是维护负担。 BaseX 的每次更新都需要手动获取添加 CORS 标头的新版本 servlet 过滤器。
我想让 BaseX 本身提供 HTML 文档(并成为源),从而消除跨源请求。
是否可以?
默认web.xml
(位于BaseXWeb/WEB-INF
)已经包含了从以下位置提供静态文件的配置./static
目录下的/static/
URI:
<!-- 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>
您还可以查看数据库管理员 https://github.com/BaseXdb/basex/tree/master/basex-api/src/main/webapp/dba,它也是 BaseX 托管的 Web 应用程序的示例实现,并利用./static
一些 JavaScript 文件的文件夹。
当然,你也可以更改默认值web.xml
如果您需要从另一个目录托管的文件。另一种选择总是将文档作为 RAW 文件存储在数据库中 http://docs.basex.org/wiki/Databases#Raw_Files,并自行为他们提供足够的内容类型。作为通过托管文件./static
文件夹绕过 RestXQ 执行并让 Jetty 直接提供文件,不过,与从 BaseX 数据库读取文件相比,您可能会获得一些性能改进。第三种解决方案可能是在 BaseX 前面托管一个反向代理来提供静态文件(无论如何,这通常是在生产中完成的),但这会增加开发中的一些管理开销。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)