Как включить другой ресурс проекта SAP Cloud в развернутое приложение SAPUI5?

Я создал несколько веб-приложений SAPUI5 в Eclipse, которые были развернуты на сервере приложений 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 и вставил соответствующий 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/" >

This allows browser to find the JS-files from the common project, but leads to this error:

Примечание. Ваш браузер не поддерживает JavaScript или он отключен. Нажмите кнопку, чтобы продолжить.

Это сообщение выдает https://common-aXXXXXXXX.dispatcher.hana.ondemand.com/ host.

Анализируя HTTP-запрос, вижу, что параметр Accept:text/plain, */*; q=0.01 установлен.

Я не знаю, почему SAPUI5 запрашивает простой текст или где я могу изменить это поведение. Кто-нибудь знает, как перенести эту структуру приложения в SAP Cloud?


person Michael L.    schedule 18.05.2017    source источник
comment
Вы определили ссылку на ваше обычное приложение в файле neo-app.json?   -  person Andrii Naumovych    schedule 04.08.2017


Ответы (1)


Ответ довольно прост: сервер блокирует запросы к другим источникам, чтобы предотвратить атаки CSRF. В локальном решении все исходные файлы происходят из одного источника: с собственного сервера. В SAP Cloud каждое приложение развертывается отдельно с собственным URL-адресом. Поэтому браузер не принимает файлы JavaScript из других проектов. Решение для доступа к этим файлам - добавить URL-адрес общего проекта в места назначения в SAP Cloud Cockpit.

К сведению: Включение URL-адреса в места назначения позволяет использовать относительный URL-адрес для ссылки на внешние файлы JavaScript, чтобы они не блокировались браузером.

person Michael L.    schedule 04.08.2017