SAP OData 403 Forbidden X-CSRF-TOKEN
问题环境
这里我们以
DELETE
举例说明
EMPLOYEECOLLECTI_DELETE_ENTITY
源码如下:
method EMPLOYEECOLLECTI_DELETE_ENTITY.
" 相关参数
DATA: lv_empid(10) TYPE c. " 接收 EMPID
" 获取 REQUEST 中的 EMPID
READ TABLE it_key_tab INTO DATA(ls_get) WITH KEY name = 'EmpId'.
IF ls_get IS NOT INITIAL.
lv_empid = ls_get-value.
ENDIF.
" 删除指定 EMPID 数据
DELETE FROM zemployee WHERE empid = lv_empid.
endmethod.
问题分析
这次我们不用
Client
操作;使用Postman
来进行一次DELETE
请求操作
可以看到
CSRF Token
验证失败:CSRF Token
是 SAP 为跨站点伪造保护发送的标识符
简单来说,它是一个令牌,表示你可以更新到 SAP
响应码为:
403 Forbidden
,所以需要我们向请求头中加一下Token
解决方案
- 获取
X-CSRF-TOKEN
我们先发一次 GET
请求,Request Header
中添加抓取 X-CSRF-TOKEN
请求头,拿到 TOKEN
- 发送
DELETE
请求
将 GET
请求拿到的 TOKEN
,填入 DELETE
请求头中,发送 DELETE
请求,删除数据
- 查看底表
ZEMPLOYEE
数据