2015-08-31 9 views
0

У меня есть сервер SAP HANA XS с некоторыми таблицами DB и службой OData. Я могу подключиться к службе OData и читать данные. Как только я попытаюсь создать/обновить/удалить данные, я получаю ошибку 403 - Forbidden.
На самом деле у моего пользователя есть все права на выполнение всех указанных действий (я создал данные, используя командную строку SQL в HANA Studio). Когда я пытаюсь сделать то же самое с пользователем SYSTEM, я получаю тот же результат.SAP Odna Service не позволяет мне создавать/обновлять/удалять

ответ

0

Я предполагаю, что ваша служба OData определена, чтобы не допускать модификации данных.

Из SAP HANA Developer Guide:

По умолчанию все наборы сущностей и ассоциаций в службу 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; 
} 
1

Если файл .xsaccess выглядит следующим образом:

{ 
    "prevent_xsrf": true, 
    ... 
} 

вы должны принести в XSRF-маркер, прежде чем изменять свой объект. Чтение объекта работает без него.

Такой токен можно получить, выполнив GET в конечной точке службы следующим заголовком X-CSRF-Token=Fetch. Ответ содержит заголовок, подобный этому X-CSRF-Token=13DC4988AEAA95.... Если вы выполните ваш, например, POST теперь с только что полученным токеном будет работать.