首页 文章

SAP HANA XS引擎Odata服务不允许我创建/更新/删除

提问于
浏览
0

我有一个带有一些数据库表和OData服务的SAP HANA XS服务器 . 我能够连接到OData服务并读取数据 . 一旦我尝试创建/更新/删除数据,我就会收到 403 - Forbidden 错误 .
实际上我的用户拥有执行所有上述操作所需的权限(我使用HANA Studio中的SQL命令行创建了数据) . 当我尝试与SYSTEM用户相同时,我得到相同的结果 .

2 回答

  • 1

    如果您的.xsaccess文件如下所示:

    {
        "prevent_xsrf": true,
        ...
    }
    

    您必须在修改实体之前获取XSRF令牌 . 阅读实体无需工作 .

    可以通过使用以下标头 X-CSRF-Token=Fetch 对服务 endpoints 执行GET来获得这样的令牌 . 响应包含一个像这样的 Headers X-CSRF-Token=13DC4988AEAA95... . 如果您执行例如现在使用刚刚获得的令牌POST它将起作用 .

  • 0

    我猜你的OData服务被定义为不允许修改数据 .

    来自SAP HANA Developer Guide

    默认情况下,OData服务中的所有实体集和关联都是可写的,即可以使用CREATE,UPDATE或DELETE请求对其进行修改 . 但是,您可以通过在OData服务定义中使用forbidden选项设置适当的关键字(创建,更新或删除)来阻止执行修改请求 . 以下SAP HANA XS的OData服务定义示例显示了如何防止对OData服务公开的表myTable进行任何修改 . 使用CREATE,UPDATE或DELETE请求对指定表进行修改的任何尝试都会导致HTTP响应状态403 FORBIDDEN .

    service {
      “sap.test::myTable”
        create forbidden
        update forbidden
        delete forbidden;
    }
    

相关问题