如何将另一个SAP Cloud项目资源包含到已部署的SAPUI5应用程序中?

问题描述 投票:2回答:1

我在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

我不知道SAPUI5为什么要求纯文本,或者在哪里可以更改此行为。有谁知道如何将该应用程序结构转移到SAP Cloud?

javascript sapui5 sap bootstrapping sap-web-ide
1个回答
2
投票

答案非常简单:服务器阻止对其他来源的请求,以防止CSRF攻击。在内部解决方案中,所有源文件都来自同一来源:自己的服务器。在SAP Cloud中,每个应用程序都使用自己的URL独立部署。因此,浏览器不接受其他项目的JavaScript文件。访问这些文件的解决方案是将公共项目的URL添加到SAP Cloud Cockpit中的目标。

FYI在目标中包含URL,使您可以使用相对URL来引用外部JavaScript文件,这样它们就不会被浏览器阻止。

© www.soinside.com 2019 - 2024. All rights reserved.