使用curl上传impex

2020-09-15 00:32发布

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

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


你好

我将hybris从5.0升级到6.0。 此后,以下脚本不再起作用:

  USER =管理员
  PWD =尼姆达
  ADMIN = https://localhost:9002/admin
  FILE = myfile.impex
 
  curl -m 600 -c $ COOKIE -b $ COOKIE -o/dev/null -s -d j_username = $ USER -d j_password = $ PWD $ ADMIN/j_spring_security_check
 
  RES =`卷曲-f -c $ COOKIE -b $ COOKIE -o- -s -D $ {COOKIE} .hdr -F encoding =" UTF-8" -F maxThreads = 1 -F legacyMode = true -F _legacyMode =  -F验证时Enum = IMPORT_STRICT -F file =" @ $ FILE; type = octet/stream; filename = $(basename $ FILE)" -F enableCodeExecution = true -F _enableCodeExecution = on" $ ADMIN/console/impex/import/上传"
 
  

第二次卷曲返回403禁止错误。 似乎杂交体的身份验证过程已更改。 有人知道如何解决吗?

致谢

安迪

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

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


你好

我将hybris从5.0升级到6.0。 此后,以下脚本不再起作用:

  USER =管理员
  PWD =尼姆达
  ADMIN = https://localhost:9002/admin
  FILE = myfile.impex
 
  curl -m 600 -c $ COOKIE -b $ COOKIE -o/dev/null -s -d j_username = $ USER -d j_password = $ PWD $ ADMIN/j_spring_security_check
 
  RES =`卷曲-f -c $ COOKIE -b $ COOKIE -o- -s -D $ {COOKIE} .hdr -F encoding =" UTF-8" -F maxThreads = 1 -F legacyMode = true -F _legacyMode =  -F验证时Enum = IMPORT_STRICT -F file =" @ $ FILE; type = octet/stream; filename = $(basename $ FILE)" -F enableCodeExecution = true -F _enableCodeExecution = on" $ ADMIN/console/impex/import/上传"
 
  

第二次卷曲返回403禁止错误。 似乎杂交体的身份验证过程已更改。 有人知道如何解决吗?

致谢

安迪

付费偷看设置
发送
3条回答
大圣 - sap领域执行人,9年sap运营经验
1楼 · 2020-09-15 01:06.采纳回答

是的,这很痛苦。 SAP已经添加了跨站点请求伪造保护,考虑到您可以在临时操作中造成的破坏,这是一件好事。

您需要在登录名和每个后续请求中传递csrf令牌。 我没有尝试过impex,但我这样做是为了从脚本运行Groovy,我认为它是相似的。

  • 请求登录页面/login.jsp

  • 解析表单字段 _csrf 的值

  • 使用上面解析的值发送登录凭据+字段 _csrf

  • 加载脚本页面/console/scripting

  • 解析 _csrf http响应标头的值(与我们之前获得的令牌不同!)

  • 将此值作为 X-CSRF-Token http请求标头与您提出的每个发布请求一起发送(即,发布到/console/scripting/execute)

我放弃了尝试从bash脚本执行此操作的方法,而是编写了一个普通的shell脚本来代替它。

我是小鹏鹏啊
2楼-- · 2020-09-15 01:08

很好! 感谢分享。

N-Moskvin
3楼-- · 2020-09-15 01:06

感谢您指出正确的方向。 这是工作脚本部分:

 #登录过程...
  令牌= $(curl -b $ COOKIE -c $ COOKIE --request GET" $ ADMIN/login.jsp" -s | awk -F'name = \" _ csrf \"''/_csrf/{print $ 2}'| 切-d'"'-f2)
  curl -H" X-CSRF-令牌:$令牌" -b $ COOKIE -c $ COOKIE -o- -d j_username = $ USER -d j_password = $ PWD -d _csrf = $ TOKEN" $ ADMIN/j_spring_security_check" -s  -k
  令牌2 = $(curl -b $ COOKIE -c $ COOKIE --request GET" $ ADMIN/console/impex/import" -s | awk -F'name = \" _ csrf \"''/_csrf/{print $ 2;  exit}'| cut -d'"'-f2)
 
  echo" ===导入脚本'$ FILE'==="
  RES =`curl -H"引用者:$ ADMIN/控制台/impex/import/" -f -c $ COOKIE -b $ COOKIE -o- -s -D $ {COOKIE} .hdr -F encoding =" UTF-8  " -F maxThreads = 1 -F legacyMode = true -F _legacyMode = on -FvalidationEnum = IMPORT_STRICT -F file =" @ $ FILE; type = octet/stream; filename = $(basename $ FILE)" -F enableCodeExecution = true  -F _enableCodeExecution = on" $ ADMIN/console/impex/import/upload?_csrf =" $ TOKEN2`
  

一周热门 更多>