2

您好,我需要一些帮助,我的 odata 服务已经在运行,并且我有一个这样的网址:

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

这是我的配置,我认为这是错误的。

清单.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/ $metadata?sap-language=ES:对预检请求的响应未通过访问控制检查:否 'Access-Control-Allow- Origin' 标头存在于请求的资源上。因此,不允许访问源“ http://localhost:port ”。响应具有 HTTP 状态代码 401。

4

1 回答 1

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 文件的原因。如果您已经拥有它,而不仅仅是更改它。如果您的项目中还没有此文件,您可以通过右键单击项目名称并选择New >> HTML5 Application Descriptor轻松创建它。这将在项目的根目录中创建此文件。(通常存在于 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 将每个请求转发到指定目标下的不同系统。

仅当您有一个SAP Cloud 连接器将您的 SAP Cloud 帐户与您的 SAP NetWeaver 本地系统链接时,这才有效。

于 2018-03-01T15:50:43.133 回答