要开发自定义SAPUI5 / Fiori应用程序,我们需要从另一台服务器使用RESTful Web服务。避免CORS(跨域)错误我们在本地使用eclipse,它支持我们使用" UI5简单代理Servlet"。
<!-- ============================================================== -->
<!-- UI5 proxy servlet -->
<!-- ============================================================== -->
<servlet>
<servlet-name>SimpleProxyServlet</servlet-name>
<servlet-class>com.sap.ui5.proxy.SimpleProxyServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>SimpleProxyServlet</servlet-name>
<url-pattern>/proxy/*</url-pattern>
</servlet-mapping>
如果我在SAP Application Server上测试应用程序,则无法使用URL中的proxy-servlet进行以下调用:
var serviceUrl = 'proxy/<host>/<service>/rest/api/content/' + contentID + '?parameters';
$.ajax({
type: 'GET',
url : serviceUrl,
headers: {
'Authorization': "Basic " + btoa('USERNAME' + ":" + 'PWD') },
dataType: 'json',
indexValue: { param1:oView,
param2:oModel
},
crossDomain: true,
success: function(data,textStatus,ErrorHandler) {
alert("Success");
},
error: function(ErrorHandler,textStatus,errorThrown) {
alert("Error");
}
在没有代理/的情况下运行它,使用Chrome和选项&#34; - disable-web-security&#34; RESTcall工作正常。
有没有办法在SAP Netweaver Application服务器上使用proxy-servlet?
答案 0 :(得分:2)
它不起作用的原因是因为它不起作用。在the official documentation中,SAP声明:
请注意,由于安全原因,SimpleProxyServlet仅限于本地测试目的。它只能用于本地主机方案(访问网关服务以避免跨域问题),并且在部署在应用程序服务器上时不起作用。为了高效使用,请参阅成熟的代理servlet。
当然,你可以忽略这一点,无论如何都要这样做。我不确定他们究竟是如何阻止servlet成为已部署应用程序的一部分,但我相信你可以通过这种或那种方式让它工作:
但我不会走这条路。在我看来,除了使用SAP servlet之外,您还有三个主要解决方案: