消耗odata时出错

问题描述 投票:1回答:1

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

odata sapui5
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 file。如果你已经拥有它而不仅仅是改变它。如果您的项目中还没有此文件,可以通过右键单击项目名称并选择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 NetWeaver内部部署系统相关联的SAP Cloud Connector时,此功能才有效。

© www.soinside.com 2019 - 2024. All rights reserved.