簡體   English   中英

如何將另一個 SAP Cloud 項目資源包含到已部署的 SAPUI5 應用程序中?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM