CSRF令牌验证在对CDS注释生成的OData Web服务的请求中失败

2020-08-22 12:10发布

点击此处---> 群内免费提供SAP练习系统(在群公告中)加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中)嗨, 我当前正在尝试在SAP ...

         点击此处--->   EasySAP.com群内免费提供SAP练习系统(在群公告中)

加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中)


嗨,

我当前正在尝试在SAP Netweaver 751应用服务器上构建测试SAPUI5应用。

要在应用程序中显示的数据,是通过在CDS视图中借助注释" @ OData.publish:true"生成的OData Web服务检索的。

实际显示是在SAPUI5应用程序的SmartTable中完成的。
SmartTable的定义如下:

 


 
 
 


 
 

现在,在视图的控制器中,我将按以下方式实例化和设置OData模型:

 onInit:function(){
    var oModel,oView;
    oModel = new sap.ui.model.odata.v2.ODataModel("/img/sap/opu/odata/sap/ZPS_CDS_SFLIGHT_CDS",false);

    oView = this.getView();
    oView.setModel(oModel);
 }
 

现在,当我运行SAPUI5应用程序(在Application Server上部署之后)时,我得到以下响应:

查看实际的POST请求,我注意到它们失败,并显示消息" CSRF令牌验证失败"。

仔细查看实际的POST请求,我发现这2个请求是由前面的HEAD请求生成的两个不同的CSRF令牌完成的:

任何想法为什么会这样? 我通常希望在整个会话中使用单个CSRF令牌。

在这种特殊情况下,我认为SmartTable无法完成POST请求。

提前谢谢!

sepo

(3.3 kB)
3条回答
SAP小菜
2020-08-22 12:17

嗨,

我无法找到使用不同的CSFR令牌发布两个连续的批处理请求这一事实的解释,但我设法找到一种解决方法: disable 使用批处理 通过设置

在OData模型中进行请求
 oModel.setUseBatch(false); 

干杯,
sepo

一周热门 更多>