У меня есть сервер SAP HANA XS с некоторыми таблицами DB и службой OData. Я могу подключиться к службе OData и читать данные. Как только я попытаюсь создать/обновить/удалить данные, я получаю ошибку 403 - Forbidden
.
На самом деле у моего пользователя есть все права на выполнение всех указанных действий (я создал данные, используя командную строку SQL в HANA Studio). Когда я пытаюсь сделать то же самое с пользователем SYSTEM, я получаю тот же результат.SAP Odna Service не позволяет мне создавать/обновлять/удалять
ответ
Я предполагаю, что ваша служба OData определена, чтобы не допускать модификации данных.
По умолчанию все наборы сущностей и ассоциаций в службу OData являются записываемый, то есть они могут быть изменены с CREATE, UPDATE или DELETE запросов. Тем не менее, вы можете предотвратить выполнение запроса на изменение, установив соответствующее ключевое слово (), update или delete) с опцией
forbidden
в определении службы OData. В следующем примере определения службы OData для SAP HANA XS показано, как предотвратить любую модификацию таблицыmyTable
, которая открывается службой OData. Любая попытка внести изменения в указанную таблицу с использованием запроса CREATE, UPDATE или DELETE приводит к статусу HTTP-ответа403 FORBIDDEN
.
service {
“sap.test::myTable”
create forbidden
update forbidden
delete forbidden;
}
Если файл .xsaccess выглядит следующим образом:
{
"prevent_xsrf": true,
...
}
вы должны принести в XSRF-маркер, прежде чем изменять свой объект. Чтение объекта работает без него.
Такой токен можно получить, выполнив GET в конечной точке службы следующим заголовком X-CSRF-Token=Fetch
. Ответ содержит заголовок, подобный этому X-CSRF-Token=13DC4988AEAA95...
. Если вы выполните ваш, например, POST теперь с только что полученным токеном будет работать.