持续创作,加速成长!这是我参与「掘金日新计划 · 10 月更文挑战」的第7天,点击查看活动详情
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数据