2017-05-18 13 views
1

Eclipse에서 SAP NetWeaver PO 7.5 Application Server에 배포 된 몇 가지 SAPUI5 웹 응용 프로그램을 만들었습니다. 이러한 모든 응용 프로그램은 "공통"프로젝트에서 일반 구성 요소를 사용합니다. 난 그냥이 부트 스트랩 스크립트 태그와 index.html의 헤더를 통해 특정 응용 프로그램에서 해당 제공 :SAP Cloud5를 통해 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을의 부트 스트랩 스크립트 태그에 해당 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-파일을 찾을 수 있어요 일반적인 프로젝트는하지만, 다음과 같은 오류 날 리드 :

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 클라우드로 전환하는 방법을 알고 있습니까?

+0

neo-app.json 파일에서 일반적인 앱에 대한 링크를 정의 했습니까? –

답변

1

답변은 매우 쉽습니다. 서버는 CSRF 공격을 막기 위해 다른 출처에 대한 요청을 차단합니다. 온 - 프레미스 솔루션에서 모든 소스 파일은 동일한 출발지에서옵니다 : 자체 서버. SAP Cloud에서는 각 애플리케이션이 자체 URL로 독립형으로 배포됩니다. 따라서 브라우저는 다른 프로젝트의 JavaScript 파일을 허용하지 않습니다. 이 파일에 액세스하는 솔루션은 SAP Cloud Cockpit의 대상에 공통 프로젝트의 URL을 추가하는 것입니다.

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.