Sapui5 403禁止:使用tomcat服务器从Fiori应用程序调用网关服务时,CSRF令牌失败

Sapui5 403禁止:使用tomcat服务器从Fiori应用程序调用网关服务时,CSRF令牌失败,sapui5,netweaver,Sapui5,Netweaver,我已经在WebIDE中创建了Fiori应用程序(版本1.28),并将其导入eclipse。 在component.js配置中,我提到了不带代理的完整odata服务URL,并在chrome中打开了应用程序,参数为禁用web安全性 我只是在xml视图中对表的项聚合进行了一些Odata模型绑定 是的,我使用的是ODataV2模型(models.js中自动生成的代码),csrf令牌的处理默认为true 我可以看到调用被触发,一个用于获取CSRF令牌,另一个用于批量获取数据(POST请求)。 但我仍然面临

我已经在WebIDE中创建了Fiori应用程序(版本1.28),并将其导入eclipse。 在component.js配置中,我提到了不带代理的完整odata服务URL,并在chrome中打开了应用程序,参数为禁用web安全性

我只是在xml视图中对表的项聚合进行了一些Odata模型绑定

是的,我使用的是ODataV2模型(models.js中自动生成的代码),csrf令牌的处理默认为true

我可以看到调用被触发,一个用于获取CSRF令牌,另一个用于批量获取数据(POST请求)。 但我仍然面临着403被禁止的问题。无法理解为什么会发生这种情况。请查看附件。及

请建议我是否必须对UI5代码或OData服务实现或网关配置进行任何更改

从Models.js中提取

createODataModel: function(oOptions) {
    var aUrlParametersForEveryRequest, oConfig, sUrl;
    oOptions = oOptions || {};
    if (!oOptions.url) {
        jQuery.sap.log.error("<ErrorText>");
        return null;
    }
    oConfig = jQuery.extend(true, {}, oOptions.config);
    aUrlParametersForEveryRequest = oOptions.urlParametersForEveryRequest || [];
    oConfig.metadataUrlParams = oConfig.metadataUrlParams || {};
    sUrl = extendMetadataUrlParameters(aUrlParametersForEveryRequest, oConfig.metadataUrlParams, oOptions.url);
    return new ODataModel(sUrl, oConfig);
}
"config": {
    "i18nBundle": "ZMM_PMTOT.i18n.i18n",
    "serviceUrl": "https://<host>:<port>/sap/opu/odata/sap/ZMM_PMTOT/",
},
init: function() {
    var mConfig = this.getMetadata().getConfig();
    var oModel = models.createODataModel({
        urlParametersForEveryRequest: ["sap-server", "sap-client", "sap-language"],
        url: this.getMetadata().getConfig().serviceUrl,
        config: {
            metadataUrlParams: {
                "sap-documentation": "heading"
            }
        }
    });
    this.setModel(oModel);
    this._createMetadataPromise(oModel);
}
createODataModel:function(oOptions){
var aUrlParametersForEveryRequest,oConfig,sUrl;
oOptions=oOptions |{};
如果(!oOptions.url){
jQuery.sap.log.error(“”);
返回null;
}
oConfig=jQuery.extend(true,{},oOptions.config);
aurlParametersFoveryRequest=oOptions.urlParametersFoveryRequest | |[];
oConfig.metadataUrlParams=oConfig.metadataUrlParams | |{};
sUrl=extendMetadataUrlParameters(aurlParametersForveyRequest、oConfig.metadataUrlParams、oOptions.url);
返回新的ODataModel(sUrl,oConfig);
}
从Component.js中提取

createODataModel: function(oOptions) {
    var aUrlParametersForEveryRequest, oConfig, sUrl;
    oOptions = oOptions || {};
    if (!oOptions.url) {
        jQuery.sap.log.error("<ErrorText>");
        return null;
    }
    oConfig = jQuery.extend(true, {}, oOptions.config);
    aUrlParametersForEveryRequest = oOptions.urlParametersForEveryRequest || [];
    oConfig.metadataUrlParams = oConfig.metadataUrlParams || {};
    sUrl = extendMetadataUrlParameters(aUrlParametersForEveryRequest, oConfig.metadataUrlParams, oOptions.url);
    return new ODataModel(sUrl, oConfig);
}
"config": {
    "i18nBundle": "ZMM_PMTOT.i18n.i18n",
    "serviceUrl": "https://<host>:<port>/sap/opu/odata/sap/ZMM_PMTOT/",
},
init: function() {
    var mConfig = this.getMetadata().getConfig();
    var oModel = models.createODataModel({
        urlParametersForEveryRequest: ["sap-server", "sap-client", "sap-language"],
        url: this.getMetadata().getConfig().serviceUrl,
        config: {
            metadataUrlParams: {
                "sap-documentation": "heading"
            }
        }
    });
    this.setModel(oModel);
    this._createMetadataPromise(oModel);
}
“配置”:{
“i18n绑定”:“ZMM_PMTOT.i18n.i18n”,
“serviceUrl”:“https://:/sap/opu/odata/sap/ZMM_PMTOT/”,
},
init:function(){
var mConfig=this.getMetadata().getConfig();
var oModel=models.createODataModel({
UrlParametersForveyRequest:[“sap服务器”、“sap客户端”、“sap语言”],
url:this.getMetadata().getConfig().serviceUrl,
配置:{
metadataUrlParams:{
“sap文档”:“标题”
}
}
});
这个.setModel(oModel);
这是._createMetadataPromise(oModel);
}
提前谢谢

致以最良好的祝愿,
Phaneendra

也许您可以检查事务/iwfnd/error_日志并调试调用,也许它提供了一个提示,告诉您为什么它是禁止的。请求是否到达后端?否则,请提供一些代码,此时只有请求没有帮助。您好@zyrex,我已经检查了网关错误日志。但那里什么也没有。所以,我假设后端调用本身不是“POST”。对于“GET”,是的,触发了断点。请检查webide.models.js createODataModel生成的models.js中的以下代码:函数(oOptions){var aurlParametersforiveryRequest,oConfig,sUrl;oOptions=oOptions | | |{};if(!oOptions.url){jQuery.sap.log.error(“”);返回null;}oConfig=jQuery.extend(true,{},oOptions.config);aurlParametersForveryRequest=oOptions.urlParametersForveryRequest | |【】;oConfig.metadataUrlParams=oConfig.metadataUrlParams | |{};sUrl=extendMetadataUrlParameters(aurlParametersForveryRequest,oConfig.metadataUrlParams,oOptions.url);返回新的ODataModel(sUrl,oConfig)},Component.js{uuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuu“ZMM_PMTOT.i18n.i18n”,“serviceUrl:“https:/:/sap/opu/odata/sap/ZMM_PMTOT/”,},通过web ide自动生成代码:{uuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuiInit:function(){var mConfig=this.getMetadata().getConfig();var oModel=models.createODataModel({refrever parameters:][uuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuu.getConfig().serviceUrl,config:{metadataUrlParams:{“sap文档”:“heading”}}}};this.setModel(oModel);this.\u createMetadataPromise(oModel);为了更好的可读性,我在问题中添加了您的注释