无法在SAPUI5应用程序中使用OData V2(Northwind)数据

问题描述 投票:0回答:2
odata sapui5 sap-fiori sap-business-technology-platform ui5-tooling
2个回答
0
投票

问题主要有两个问题:

  1. 申请代码

    • 服务 URL 无效:将字符串传递给
      ODataModel
      构造函数时,该字符串需要指向 OData 服务为服务
      $metadata
      文档提供服务的资源。因此,需要从字符串中删除
      Orders?$format=json
    • 在视图定义中将
    • items="{odm1>/results}
       替换为 
      items="{odm1>/Orders}
  2. CORS 问题 *

    公共演示代理服务器

    cors-anywhere.herokuapp.com

    不再可以直接使用,除非先请求临时访问(请参阅相关
    公告)。

    相反,请继续阅读文档主题

    “由于同源策略导致请求失败(跨源资源共享 - CORS)”中的“解决方案”部分。展开与您的开发环境相对应的小节。

    如果您在本地工作而未在 SAP BTP 中设置目的地:

      展开并遵循“本地开发:配置本地代理”小节
    • 或使用
    • ui5-middleware-simpleproxy
      。这是带有中间件的示例 
      ui5.yaml
       配置:
      https://github.com/boghyon/gitpod-ui5-basic/blob/main/ui5.yaml。请记住事先在终端中执行 npm install ui5-middleware-simpleproxy --save-dev
      。要配置 
      ui5-middleware-simpleproxy
       中的 
      ui5.yaml
       以使用 
      odata.org
       中的 Northwind 服务,您可以设置:
      
      1. mountPath: /myODataService
        
        
      2. configuration/baseUri: https://services.odata.org
        
        
      3. 最后在你的控制器代码中:
      4. new ODataModel("/myODataService/V2/Northwind/Northwind.svc"); // without .../Orders?$format=json
        
        

    *OData V4 TripPin 服务外,odata.org

     的服务目前不支持 CORS。要了解 CORS 的一般信息,请参阅
    同源策略和 CORS(跨源资源共享)

    如果服务不支持 CORS,服务可能会报告模糊的报告,

    例如:

      客户端使用方法
    1. OPTIONS
      发送预检请求,以查看服务器允许哪些类型的请求。
    2. 服务器响应它不理解该
    3. OPTIONS
       请求。
    4. 客户报告
    5. "OPTIONS ... 501 (Not Implemented)"

TL;博士

总的来说,来自

odata.org

OData 服务维护不善、不完整,并且存在许多问题
我已经在 https://github.com/OData/ODataSamples/issues?q=is%3Aissue+ 报告了其中一些问题作者%3Aboghyon.

odata.org

的服务也不支持生成CSRF令牌。在定义 
tokenHandling: false
 类的构造函数设置时添加 
v2.ODataModel

new ODataModel({ // V2 serviceUrl: "/myMountOrDestinationPath/...", preliminaryContext: true, defaultBindingMode: "TwoWay", tokenHandling: false, // prevents "HEAD ... 501 (Not Implemented)" from odata.org services // ... })
👉 不要参考 

odata.org

 的服务,请查看这篇博文,了解 SAP 维护的替代示例 
OData 服务: “新 SAP 网关演示系统可用”


0
投票
我想,代理服务“herokuapp.com”不再工作了。 尝试从您的网址中删除该部分。这将导致 CORS 错误。 要解决此问题,请遵循文档中的建议

同源策略导致请求失败(跨源资源共享 - CORS)

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