带有Teiid 11.2 / Wildfly的sapui5 OData.V4.oDataModel

时间:2018-11-12 22:30:02

标签: sapui5

我正在尝试在SPA中使用SAPUI5来显示TEIID / Wildfly ODataV4服务中的数据。当SAPUI5 ODATA V4数据模型绑定到服务时,我遇到了几个错误。因此,我通过代理(grunt-connect-proxy2)连接到odata服务。基本身份验证有效。所附图像(屏幕快照1)中标记的服务文件夹上方的元数据文件是该服务的实际元数据文件,如您所见,该文件已正确加载。因此,没有CORS问题或授权问题。

Screenshot1

Screenshot1

据我了解,该问题似乎与CSRF令牌请求有关。似乎Teiid / Wildfly没有回答CSRF令牌获取请求。有没有一种方法可以配置Wildfly来回答请求,或者是否可以禁用odata V4模型的CSRF请求?我已经在odata V2模型的构造函数中看到了这样一个选项。工作配置看起来如何?

以下是浏览器日志中的屏幕截图:

我观察到另一个问题,从中我不知道它是否与前一个问题有关(也有X-CSRF-Token:涉及获取),或者某个地方是否还有其他遗漏。当我使用聚合绑定将odata集合绑定到sapui5列表时,发生第二个问题。响应看起来像

  

请求网址:http://localhost:9001/odata4/svc/my_nutri_diary/ $ batch   请求方法:POST状态代码:406不可接受的远程地址:   [:: 1]:9001推荐人政策:降级时无推荐人回复   Headersview源访问控制允许凭据:true   access-control-allow-origin:http://localhost:9001缓存控制:   无缓存,无存储,必须重新验证的连接:关闭   内容编码:gzip内容长度:125内容类型:   application / json; odata.metadata =最短日期:2018年11月12日,星期一   20:04:30 GMT到期:0 odata版本:4.0编译指示:无缓存服务器:   WildFly / 11 x-powered by:Undertow / 1 Request Headersview源接受:   多部分/混合的Accept-Encoding:gzip,deflate,br Accept语言:de   授权:基本SU1TVXNlcjpJTVM0Zm9ydW0l连接:keep-alive   内容长度:329内容类型:多份/混合;   boundary = batch_id-1542053070786-11 Cookie:sidebar_collapsed = false;   cycle_analytics_help_dismissed = 1;   __utmz = 111872281.1539128843.1.1.utmcsr =(直接)| utmccn =(直接)| utmcmd =(无); __utma = 111872281.767670437.1539128843.1541866362.1541870562.42 DNT:1主机:localhost:9001 MIME版本:1.0 OData-MaxVersion:4.0   OData版本:4.0来源:http://localhost:9001引用者:   http://localhost:9001/用户代理:Mozilla / 5.0(iPhone; CPU iPhone OS   11_0,例如Mac OS X)AppleWebKit / 604.1.38(KHTML,例如Gecko)   版本11.0移动版/ 15A372 Safari / 604.1 X-CSRF-令牌:提取   X-Requested-With:XMLHttpRequest请求有效负载   --batch_id-1542053070786-11 Content-Type:应用程序/ http Content-Transfer-Encoding:二进制GET配置文件?$ skip = 0&$ top = 100 HTTP / 1.1   接受:application / json; odata.metadata = minimal; IEEE754Compatible = true   接受语言:de   内容类型:应用程序/ json;字符集= UTF-8; IEEE754Compatible = true   --batch_id-1542053070786-11-

感谢您的建议!

最好的问候,  克里斯托夫

关于搜索替代方法的进一步说明:由于我目前正在寻找一种能够使用odata.v4模型的替代方法,因此我发现了以下博客文章:

https://blogs.sap.com/2015/08/05/disable-csrf-token-for-odata-calls-using-sap-netweaver-gateway/

但是,该方法似乎不适用于odata.v4模型,因为它具有不同的接口。没有setHeaders()函数可在数据模型上设置自定义标头。因此,我尝试通过

设置标题

$。ajaxSetup({headers:{'X-Requested-With':'X'}});

不幸的是,这也不起作用。如果某人的Odata.v4模型与TEIID或Olingo v4一起运行,那么如果他能给我有关他如何解决此问题的反馈,那就太好了。

0 个答案:

没有答案