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

时间:2015-08-31 12:16:44

标签: odata sap hana hana-xs

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

2 个答案:

答案 0 :(得分:1)

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

{
    "prevent_xsrf": true,
    ...
} 

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

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

答案 1 :(得分:0)

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

来自SAP HANA Developer Guide

  

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

403 FORBIDDEN