[英]How to include another SAP Cloud project resource into deployed SAPUI5 app?
我在 Eclipse 中創建了幾個 SAPUI5 Web 應用程序,這些應用程序已部署到 SAP NetWeaver PO 7.5 應用程序服務器。
所有這些應用程序都使用“公共”項目的通用組件。 我只是通過帶有此引導腳本標記的 html 標頭使它們可用:
<!-- Bootstrapping UI5 -->
<script id="sap-ui-bootstrap"
src="/sapui5/resources/sap-ui-cachebuster/sap-ui-core.js"
data-sap-ui-libs="sap.m"
data-sap-ui-theme="path.to.custom.theme"
data-sap-ui-compatVersion="edge"
data-sap-ui-resourceroots='{"com.namespace.ui.specificapp": ".", "com.namespace.ui.common" :"/com.namespace~ui~common~web"}'
data-sap-ui-frameOptions="trusted"
data-sap-ui-appCacheBuster = "./,/com.namespace~ui~common~web/" >
</script>
這一直很好,直到我分層將這些應用程序轉移到 SAP Cloud。
我將項目導入到 WebIDE,我發現的第一件事是data-sap-ui-resourceroots
屬性不再起作用,因為應用程序無法從公共項目中找到組件。 因此,我將通用應用程序部署到 SAP Cloud 並在 index.html 的引導腳本標簽中插入了相應的 URL,如下所示:
<script id="sap-ui-bootstrap"
src="/sapui5/resources/sap-ui-cachebuster/sap-ui-core.js"
data-sap-ui-libs="sap.m"
data-sap-ui-theme="path.to.custom.theme"
data-sap-ui-compatVersion="edge"
data-sap-ui-resourceroots='{"com.namespace.ui.specificapp": ".", "com.namespace.ui.common" :"/https://common-aXXXXXXXX.dispatcher.hana.ondemand.com/"}'
data-sap-ui-frameOptions="trusted"
data-sap-ui-appCacheBuster = "./,/com.namespace~ui~common~web/" >
這允許瀏覽器從公共項目中查找 JS 文件,但會導致此錯誤:
注意:您的瀏覽器不支持 JavaScript 或已關閉。 按下按鈕繼續。
這是由https://common-aXXXXXXXX.dispatcher.hana.ondemand.com/主機拋出的消息。
分析 HTTP 請求,我看到參數Accept:text/plain, */*; q=0.01
設置Accept:text/plain, */*; q=0.01
。
我不知道為什么 SAPUI5 請求純文本或者我可以在哪里改變這種行為。 有誰知道如何將此應用程序結構轉移到 SAP Cloud?
答案很簡單:服務器阻止對其他來源的請求以防止 CSRF 攻擊。 在本地解決方案中,所有源文件都來自同一個來源:自己的服務器。 在 SAP Cloud 中,每個應用程序都使用自己的 URL 獨立部署。 因此瀏覽器不接受來自其他項目的 JavaScript 文件。 訪問這些文件的解決方案是將公共項目的 URL 添加到 SAP Cloud Cockpit 中的目的地。
僅供參考:在目標中包含 URL 使您可以使用相對 URL 來引用外部 JavaScript 文件,以便瀏覽器不會阻止它們。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.