-1

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

4

2 回答 2

1

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

{
    "prevent_xsrf": true,
    ...
} 

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

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

于 2016-12-19T21:21:09.187 回答
0

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

SAP HANA 开发人员指南

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

service {
  “sap.test::myTable”
    create forbidden
    update forbidden
    delete forbidden;
}
于 2015-08-31T19:25:35.683 回答