gpt4 book ai didi

same-origin-policy - 有没有办法让 BaseX 为 HTML 文档提供服务?

转载 作者:行者123 更新时间:2023-12-04 17:55:55 25 4
gpt4 key购买 nike

有没有办法让 BaseX 的 HTTP 服务器提供一个 HTML 文档,该文档可以作为原始资源存储在数据库中,也可以存储在文件系统中,内容类型为 text/html,以便可以在浏览器中显示?

该文档是一个向 BaseX 发出 XHR 请求的网页。目前,我通过文件协议(protocol)在浏览器上加载它。这需要让 Jetty 响应 CORS header ,否则同源策略会阻止 XHR 请求。

但是,这是一种维护负担。对 BaseX 的每次更新都需要手动获取添加 CORS header 的新版本的 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>

您还可以查看 BaseX DBA ,它还充当由 BaseX 托管的 Web 应用程序的示例实现,并为一些 JavaScript 文件使用 ./static 文件夹。

当然,如果您需要从另一个目录托管的文件,您也可以更改默认的 web.xml。替代方案始终是 store the documents in a database as RAW files ,并自行为他们提供足够的内容类型。由于通过 ./static 文件夹托管文件会绕过 RestXQ 执行并让 Jetty 直接提供文件,因此与从 BaseX 数据库读取文件相比,您可能会有一些性能改进。第三种解决方案可能是在 BaseX 之前托管一个反向代理来提供静态文件(通常在生产环境中这样做),但这会增加开发中的一些管理开销。

关于same-origin-policy - 有没有办法让 BaseX 为 HTML 文档提供服务?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40434190/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com