调用sap odata服务时,csrf令牌验证在post请求中失败

时间:2016-12-14 08:40:58

标签: node.js odata token sap

master-datasource.xml

我在这里获取xcsrf令牌

 var Array = require('node-array');
    var request = require("request");
username = "user24",
password = "",
      auth = "Basic " + new Buffer(username + ":" + password).toString("base64");
var options = { method: 'GET',
url:  "http://207.188.73.88:8000/sap/opu/odata/sap/ZTEE_SUGGEST_SRV/ZteeSuggestSet?$filter=Number eq 5 and Date eq datetime'2014-03-11T00%3A00%3A00'&$format=json",
headers: 
{ 

并在此设置csrf令牌,但它给出了scrf令牌所需或无效的错误

    'x-csrf-token': 'fetch',
   'content-type': 'application/json',
    authorization: auth } };

      request(options, function (error, response, body) {
          if (error) throw new Error(error);
     // console.log(response.headers['x-csrf-token']);
     var token="'";
       token+=response.headers['x-csrf-token'];
        token+="'";
         //console.log(token);
      var options = { method: 'POST',
  url: 'http://207.188.73.88:8000/sap/opu/odata/sap/ZTEE_TIME_SRV/ZTEERESERVESet',

// console.log(body); 这里它显示了令牌rrequired但我已经在标题中设置了

  headers: 
   {
 authorization: auth,
 'x-csrf-token': token,
 'content-type': 'application/json' },
 body: 
 { Time: 'time\'PT11H00M00S\'',
 Date: 'datetime\'2014-03-11T00%3A00%3A00\'',
 Location: 'AAJ',
 Number: 3 },
 json: true };

  request(options, function (error, response, body) {
      if (error) throw new Error(error);

1 个答案:

答案 0 :(得分:1)

在使用SAP WEBIDE时,我遇到过类似的情况。

我已禁用令牌请求,我可以与Odata服务建立连接。我在component.js文件中做了类似这段代码的事情。

var oModel = new sap.ui.model.odata.ODataModel(this.getMetadata().getConfig().serviceUrl);
oModel.disableHeadRequestForToken = true;

serviceURL 包含Odata服务的网址。 您可以尝试禁用CSRF令牌请求并检查。