Curl

使用 Curl 進行 Rest API 呼叫 - 身份驗證失敗

  • February 19, 2016

我在使用 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 產生輸出,使其看起來像上面那樣。

看一下精美的手冊,其中提到了 -H/–header 選項:This option can be used multiple times to add/replace/remove multiple headers.

只是為了擴展@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`"

引用自:https://serverfault.com/questions/758374