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

标签 javascript sapui5 bootstrapping sap-web-ide

我在 Eclipse 中创建了多个 SAPUI5 Web 应用程序,这些应用程序已部署到 SAP NetWeaver PO 7.5 应用程序服务器。

所有这些应用程序都使用“通用”项目的通用组件。我只是通过 html header 使用此引导脚本标签使它们可用:

<!-- 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属性不再起作用,因为应用程序无法从公共(public)项目中找到组件。因此,我将通用应用程序部署到 SAP Cloud,并将相应的 URL 插入到 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/" >

这允许浏览器从公共(public)项目中查找 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?

最佳答案

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

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

关于javascript - 如何将另一个 SAP Cloud 项目资源包含到已部署的 SAPUI5 应用程序中?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44041941/

相关文章:

javascript - 将 div 高度设置为与最高高度相同,同时保持响应式布局

javascript - 在 .NET 业务应用程序上使用 SAP OpenUI5

javascript - 在 React 中更新父类的 Prop

javascript - 如何更改 P13nItem TimePicker/DatePicker 上的显示格式?

sapui5 - 仅在 UI5 的 sap.m.Input Controller 中使用大写或大写字母

c#,MSBuild Bootstrapper with wix,如何下载.net framework 3.5 SP1?

android - 如何确定 Android 应用程序是否使用 JUnit 测试工具启动?

java - 引导 Play 应用程序

javascript - struts action 类中区分主窗口或弹出窗口的请求

JavaScript :focus For Each Input