2016-11-05 60 views
1

有沒有辦法讓BaseX的HTTP服務器將存儲在數據庫中的HTML文檔作爲原始資源或文件系統中的文本/ html內容類型存儲,以便它可以在瀏覽器中顯示?有沒有辦法讓BaseX提供HTML文件?

該文檔是一個向BaseX發送XHR請求的網頁。目前,我通過文件協議在瀏覽器上加載它。這使得Jetty需要使用CORS標題進行響應,否則相同的源策略會阻止XHR請求。

但是,這是一個維護負擔。每次更新BaseX都需要手動獲取新版本的添加CORS頭的servlet過濾器。

我想讓BaseX本身服務於HTML文檔(併成爲原點),從而消除了跨源請求。

可能嗎?

回答

1

默認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應用程序的示例實現,併爲某些JavaScript文件使用./static文件夾。

當然,如果您需要從其他目錄託管的文件,也可以更改默認的web.xml。一個替代方案將始終是store the documents in a database as RAW files,併爲您提供足夠的內容類型。由於通過./static文件夾託管文件繞過RestXQ執行並使Jetty直接提供文件,不過,與從BaseX數據庫讀取文件相比,可能會有一些性能改進。第三種解決方案可能是在BaseX之前託管一個反向代理來提供靜態文件(通常無論如何都是爲生產而完成的),但這會增加開發中的一些管理開銷。

+0

這是完美的。我正在向那些煩人的SOP塊告別。謝謝! – ARX

相關問題