2017-05-18 39 views
1

我在Eclipse中創建了幾個SAPUI5 Web應用程序,這些應用程序已部署到SAP NetWeaver PO 7.5應用程序服務器。 所有這些應用程序都在「通用」項目中使用通用組件。我只是讓他們在通過頭中的index.html這個引導腳本標籤的特定應用程序可供選擇:如何通過SAPUI5從WebIDE引用SAP Cloud中的另一個項目

<!-- 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雲裏的index.html像這樣的引導腳本標記插入相應的網址:

<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-文件從通用組件常見的項目,但使我以下錯誤:

Note: Your browser does not support JavaScript or it is turned off. Press the button to proceed.

這是由https://common-aXXXXXXXX.dispatcher.hana.ondemand.com/主機迴應。當我分析HTTP請求時,我發現它有參數Accept:text/plain, */*; q=0.01集。我不知道SAPUI5爲什麼要求純文本或我可以改變這種行爲。有誰知道如何將此應用程序結構轉移到SAP Cloud?

+0

您是否已經在neo-app.json文件中定義了一個通用應用程序的鏈接? –

回答

1

答案很簡單:服務器阻止對其他來源的請求以防止CSRF攻擊。在內部部署解決方案中,所有源文件來自相同的來源:自己的服務器。在SAP Cloud中,每個應用程序都獨立部署自己的URL。因此,瀏覽器不接受來自其他項目的JavaScript文件。訪問這些文件的解決方案是將公共項目的URL添加到SAP Cloud Cockpit中的目標。

FYI: Including the URL in the detinations enables you to use a relative URL for refering external JavaScript files, so that they aren't blocked by the browser.

相關問題