消耗odata时出错

时间:2018-02-28 21:06:55

标签: odata sapui5

Hello comunnity我需要一些帮助,我的odata服务已经运行了,我有一个这样的网址:

https://myclient:port/sap/opu/odata/SAP/servicename_SRV/MaterialListSet

这是我的配置:

的manifest.json

"dataSources": {
   "invoiceRemote": {
      "uri": "https://myclient:port/sap/opu/odata/SAP/servicename_SRV/",
      "type": "OData",
      "settings": {
      "odataVersion": "2.0"
      }
   }
}
.
.
.
"models": {
...
   "invoice": {
      "dataSource": "invoiceRemote"
   }
}

它确定这个配置????因为我得到了这两个错误:

无法加载资源:服务器响应状态为401(未授权)

无法加载https://client:port/sap/opu/odata/SAP/odata_SRV/ $元数据?sap-language = ES:对预检请求的响应未通过访问控制检查:请求的资源上没有“Access-Control-Allow-Origin”标头。因此,不允许原点“http://localhost:port”访问。响应的HTTP状态代码为401。

1 个答案:

答案 0 :(得分:1)

这条线不好;

"uri": "https://myclient:port/sap/opu/odata/SAP/servicename_SRV/",

这是因为您必须使用相对URL,因此它应该是

"uri": "/sap/opu/odata/SAP/servicename_SRV/",

背后的原因很简单:您的客户肯定有多个SAP Gateway / Fiori系统。因此,您不应该对开发或生产系统的域进行硬编码。

假设您最终将UI5应用程序部署到SAP NetWeaver系统,那么该系统将包含oData服务和UI5应用程序。由于它们将托管在同一台服务器中,因此相对URL工作正常。

然而,在Web IDE中,这还不够,因为如果您使用相对URL而不是SAP Cloud / Web IDE将了解您正在尝试访问云中的资源。

这就是您应该在UI5项目中添加/更改neo-app.json file的原因。如果你已经拥有它而不仅仅是改变它。如果您的项目中还没有此文件,可以通过右键单击项目名称并选择 New>>轻松创建该文件。 HTML5应用程序描述符。这将在项目的根目录中创建此文件。 (通常存在于webapp文件夹之外)。

最后,你必须在这个neo-app.json文件中添加一个路由,就像这个

一样
{
  "path": "/sap/opu/odata",
  "target": {
    "type": "destination",
    "name": "NAME_OF_YOUR_SAP_CLOUD_DESTINATION",
    "entryPath": "/sap/opu/odata"
  },
  "description": "SAP Gateway System"
}

这告诉Web IDE在指定的destionation下将每个请求转发到另一个系统。

仅当您将SAP Cloud帐户与SAP NetWeaver内部部署系统相关联SAP Cloud Connector时,此功能才有效。