我在使用 curl 进行 REST API 调用时遇到身份验证问题,我认为这与我的 curl 输入的格式有关。
curl -v https://api.ananthsdomain.com/version1/testaccount/test \
-H "Accept: text/xml \
User-Agent: MyIn Interface \
X-Api-Signature: XXXXXXX+u:`date +%Y%m%d%H%M%S`:`echo XXXXXXX$(date +%Y%m%d%H%M%S)XXXXXXX | openssl dgst -binary -sha1 | openssl base64`"
我必须构建 X-Api-Signature 来满足服务器的要求,其中包括 API 密钥、当前日期和 API 密钥的 sha1hash。
我收到了身份验证错误,我认为这是因为签名与 User-Agent 在同一行设置(下面的输出)
Accept: text/xml
User-Agent: MyIn Interface X-Api-Signature: XXXXXXX+u:20160210112839:O9bXXXXXXXXXXXlVAXXXXXXXXXX=
我希望看到的输出应该是这样的。
Accept: text/xml
User-Agent: MyIn Interface
X-Api-Signature: XXXXXXX+u:20160210112839:O9bXXXXXXXXXXXlVAXXXXXXXXXX=
我怎样才能使 curl 产生如上所示的输出。
答案1
看一眼精美手册,其中说明了 -H/--header 选项:This option can be used multiple times to add/replace/remove multiple headers.
答案2
只是为了扩展@mschuett 的答案,您应该使用自己的-H
选项指定每个标题,并curl
附加适当的行尾标记。
因此,您的命令将如下所示:
curl -v https://api.ananthsdomain.com/version1/testaccount/test \
-H "Accept: text/xml" \
-H "User-Agent: MyIn Interface" \
-H "X-Api-Signature: XXXXXXX+u:`date +%Y%m%d%H%M%S`:`echo XXXXXXX$(date +%Y%m%d%H%M%S)XXXXXXX | openssl dgst -binary -sha1 | openssl base64`"