使用REST API备份MarkLogic遇403错误,求解决方法
解决MarkLogic备份脚本的403错误及执行问题
1. 修正访问协议
错误提示明确显示你用HTTP访问了HTTPS服务器,需将curl命令中的URL协议从http改为https。同时,MarkLogic默认使用自签名证书,curl会触发证书验证失败,需添加-k(--insecure)参数跳过验证。
2. 修正XQuery中的路径格式
Windows路径的反斜杠\在XQuery中属于转义字符,会导致路径解析错误,需改为正斜杠/,或是将反斜杠转义为\\:
xquery version "1.0-ml"; xdmp:database-backup( xdmp:database-forests(xdmp:database("Documents")), "C:/Users/C70945/mlbackup", fn:true(), "C:/Users/C70945/mlbackup", 15 )
3. 调整curl请求头的Content-Type
调用v1/eval执行XQuery时,更适配的Content-Type是application/xquery,而非原脚本中的application/x-www-form-urlencoded。
最终修正后的Shell脚本
#!/bin/bash curl --anyauth --user admin:admin -X POST -i -k -d @./bkp.xqy \ -H "Content-type: application/xquery" \ -H "Accept: multipart/mixed; boundary=BOUNDARY" \ https://localhost:8000/v1/eval
额外注意事项
- 确保
C:/Users/C70945/mlbackup目录在MarkLogic服务器所在机器上已存在,且MarkLogic服务账号拥有该目录的读写权限。 - 若你的MarkLogic管理端口不是8000,需替换为对应端口。
- 若无需返回multipart格式响应,可移除
Accept请求头简化命令。
内容的提问来源于stack exchange,提问作者Aviator
相关产品推荐
相关产品推荐

