使用openui5消费在Amazon AWS(ABAP 7.4 MaxDB)上托管的odata

时间:2015-10-23 05:24:45

标签: amazon-ec2 odata sapui5

我在SAP MaxDB - 试用版上的SAP NetWeaver Application Server ABAP 7.4上实现了odata-Service。它托管在Amazon AWS EC2上。 odata是通过事务SEGW实现的。 (我使用了这条指令:http://www.abap-developers.com/2014/07/simple-openui5-application-i-how-to-create-odata-model-using-segw/

我看到odata服务有效,因为如果我输入AWS Linux外部IP地址并输入凭据 https://52.2.xxx.xxx:50001/sap/opu/odata/sap/ZGW_BUCH_SRV/ $元 我在浏览器中获得有关此odata服务的信息 (我使用https,因为将来会从https网站消费odata)

然后我想用OpenUI5实现它。 在Chrome中,我使用扩展“Allow-Control-Allow-Origin”

要访问我的odata服务,我使用类似的结构:

<!DOCTYPE HTML>
<html>
    <head>
        <meta http-equiv="X-UA-Compatible" content="IE=edge">
        <meta http-equiv='Content-Type' content='text/html;charset=UTF-8'/>

        <script src="/js/openui5/resources/sap-ui-core.js"
                id="sap-ui-bootstrap"
                data-sap-ui-libs="sap.ui.commons, sap.ui.table"
                data-sap-ui-theme="sap_bluecrystal">
        </script>

        <script>            

            // setting up model
            var oModel = new sap.ui.model.odata.ODataModel("https://52.2.xxx.xxx:50001/sap/opu/odata/sap/ZGW_BUCH_SRV/", false, "AAA", "BBB");

            sap.ui.getCore().setModel(oModel);

(我不会在高效的情况下使用硬编码密码)。

所以我的代码看起来像这样:

- (void)applicationDidEnterBackground:(UIApplication *)application
{
    UIBackgroundTaskIdentifier taskID = [application beginBackgroundTaskWithExpirationHandler:^{
        [application endBackgroundTask:taskID];
    }];
}

然而,Chrome中的控制台告诉我:

  

OPTIONS   htttps://52.2.xxx.xxx:50001 / SAP / OPU /的OData / SAP / ZGW_BUCH_SRV / $元   401(未经授权)XMLHttpRequest无法加载   htttps://52.2.xxx.xxx:50001 / SAP / OPU /的OData / SAP / ZGW_BUCH_SRV / $的元数据。   预检的响应具有无效的HTTP状态代码401

(我写了https https的https,因为我只能在这里发布有限数量的链接。)

Firefox,Internetexplorer,Edge或Opera也无法访问。 谁能帮帮我呢?

1 个答案:

答案 0 :(得分:0)

您的服务器拒绝选项请求 在chrome中,您可以在开发人员工具网络面板中对其进行调试 或者使用像fiddler,tcpdump,wireshark

这样的工具

odata要求发送特定标头,以便您的浏览器发送选项 请求包含这些信息,您的浏览器插件可能无法处理这些特殊关键字

您的选择:

  1. (最好)配置您的服务器以处理cors,更多信息:http://enable-cors.org,我无法向您发送配置,因为它依赖于服务器
  2. 使用handle cors
  3. 创建代理