使用Abap从OData服务中获取CSRF令牌

2020-08-16 21:28发布

         点击此处--->   EasySAP.com群内免费提供SAP练习系统(在群公告中)

加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中)


嗨,

我必须在自定义程序中提出补丁请求,为此,我们正在使用odata服务。 我们可能需要传递csrf令牌,因此为了进行获取,最初使用cl * _rest_client使用启用了cookie的odata服务的URL来调用我们自己的系统。 但是它显示了一个登录弹出窗口,在我们从系统调用时,我们希望避免该弹出窗口。 如果我们禁用弹出窗口,则会显示401未经授权的错误。 您可以指导获取令牌的步骤吗? 另外,我们还在odata服务中添加了〜check_csrf_token = 0参数。

致谢

Aditya

         点击此处--->   EasySAP.com群内免费提供SAP练习系统(在群公告中)

加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中)


嗨,

我必须在自定义程序中提出补丁请求,为此,我们正在使用odata服务。 我们可能需要传递csrf令牌,因此为了进行获取,最初使用cl * _rest_client使用启用了cookie的odata服务的URL来调用我们自己的系统。 但是它显示了一个登录弹出窗口,在我们从系统调用时,我们希望避免该弹出窗口。 如果我们禁用弹出窗口,则会显示401未经授权的错误。 您可以指导获取令牌的步骤吗? 另外,我们还在odata服务中添加了〜check_csrf_token = 0参数。

致谢

Aditya

付费偷看设置
发送
2条回答
小灯塔
1楼-- · 2020-08-16 22:10

嗨,

您可以使用CL_HTTP_CLIENT来实现目标。 首先要获取请求以获取csrf令牌,然后再获取具有csrf令牌的补丁。

在此博客中可以找到一个很好的示例(用补丁调用替换帖子调用):

https://blogs.sap.com/2016/06/21/consume-odata-service-in-abap-clhttpclient-createbydestination-http-post-method/

最好的问候,

Geert-Jan Klaps

灬番茄
2楼-- · 2020-08-16 22:15

嗨,

如果您不想创建RFC目标,则可以在目标位置替换cl_http_client => create_by目标部分。 具有以下代码段的博客:

 *创建HTTP客户端对象
     cl_http_client => create_by_url(
       出口
         网址= iv_url
        输入
          客户端= lo_http_client
        例外情况
          arguments_not_found = 1
          plugin_not_active = 2
          internal_error = 3
          其他= 4)。
     如果sy-subrc <> 0。
       返回。
     万一。

 *设置身份验证用户和密码
     如果iv_username不是INITIAL。
       lo_http_client-> authenticate(username = iv_username
                                     密码= iv_password)。
     ENDIF。

此示例还向您展示了如何设置用户名和密码以成功进行身份验证。 (但您也需要密码)

最诚挚的问候,

Geert-Jan Klaps

一周热门 更多>