curl:请求缺少身份验证标头-那里的身份验证标头

时间:2018-06-29 17:24:52

标签: curl vpn

添加更多上下文:我正在尝试向Seamless.gov API发出卷曲请求。在另一台计算机上,可以使用相同的curl命令。但是,当我在计算机上运行curl命令时,该命令不起作用。

curl -X GET -H "Content-Type: application/json" -H "Date: 1530285602" -H "Authorization: HMAC-SHA256 api_key=XXXXXXXX nonce=12335 signature=XXXXXXXXXXXXX" -d 'false' https://nycopp.seamlessdocs.com/api/form/CO1708XXXXXXXXXXXXX/elements

我有以下版本的curl

curl: stable 7.60.0 (bottled), HEAD [keg-only] Get a file from an HTTP, HTTPS or FTP server https://curl.haxx.se/ /usr/local/Cellar/curl/7.60.0 (423 files, 3MB)   Poured from bottle on 2018-06-29 at 11:44:32 From: https://github.com/Homebrew/homebrew-core/blob/master/Formula/curl.rb
==> Dependencies Build: pkg-config ✔ Optional: openssl ✘, rtmpdump ✘, libssh2 ✘, c-ares ✘, libmetalink ✘, nghttp2 ✘
==> Options
--with-c-ares   Build with C-Ares async DNS support
--with-gssapi   Build with GSSAPI/Kerberos authentication support.
--with-libmetalink  Build with libmetalink support.
--with-libssh2  Build with scp and sftp support
--with-nghttp2  Build with HTTP/2 support (requires OpenSSL)
--with-openssl  Build with OpenSSL instead of Secure Transport
--with-rtmpdump     Build with RTMP support
--HEAD  Install HEAD version
==> Caveats This formula is keg-only, which means it was not symlinked into /usr/local, because macOS already provides this software and installing another version in parallel can cause all kinds of trouble.

If you need to have this software first in your PATH run:   echo 'export PATH="/usr/local/opt/curl/bin:$PATH"' >> ~/.bash_profile

For compilers to find this software you may need to set:
    LDFLAGS:  -L/usr/local/opt/curl/lib
    CPPFLAGS: -I/usr/local/opt/curl/include For pkg-config to find this software you may need to set:
    PKG_CONFIG_PATH: /usr/local/opt/curl/lib/pkgconfig

相同的curl命令可在另一台机器上使用,但不适用于我的机器,这可能是版本或操作系统出现问题。我在Mac OS High Sierra上运行

 {
    "error": true,
    "error_log": [
        {
            "error_code": "missing_header",
            "error_message": "Request is missing header: `Authorization`",
            "error_description": "{\"Host\":\"XXXX.seamlessdocs.com\",\"Connection\":\"close\",\"X-Real-IP\":\"161.185.7.10\",\"X-Forwarded-For\":\"161.185.7.10\",\"X-Forwarded-Host\":\"nycopp.seamlessdocs.com\",\"X-Forwarded-Port\":\"443\",\"X-Forwarded-Proto\":\"https\",\"X-Original-URI\":\"\\\/api\\\/form\\\/CO1XXXXXXXXXXXXXXX\\\/elements\",\"X-Scheme\":\"https\",\"Content-Length\":\"5\",\"user-agent\":\"curl\\\/7.54.0\",\"accept\":\"*\\\/*\",\"content-type\":\"application\\\/json\",\"date\":\"1530285602\",\"authorization\":\"HMAC-SHA256 api_key=XXXXXXXXXXXXXXX nonce=12335 signature=XXXXXXXXXXXXXX\"}"
        },
        {

1 个答案:

答案 0 :(得分:1)

错误消息中有一个提示:

  

==>注意事项此公式仅适用于小桶,这意味着它没有符号链接到/ usr / local,因为macOS已经提供了该软件,并且并行安装另一个版本可能会引起各种麻烦。

OS X已经安装了curl,并且使用了该二进制文件。此版本不适用于您的请求。要找出自制软件安装curl的位置,请执行以下操作:

ll /usr/local/opt/curl

您将获得如下输出:

lrwxr-xr-x  1 maltebuchmann  admin    21B Jun 30 09:50 /usr/local/opt/curl -> ../Cellar/curl/7.60.0

使用该信息,您可以执行上述命令:

/usr/local/Cellar/curl/7.60.0/bin/curl -X GET -H "Content-Type: application/json" -H "Date: 1530285602" -H "Authorization: HMAC-SHA256 api_key=XXXXXXXX nonce=12335 signature=XXXXXXXXXXXXX" -d 'false' https://nycopp.seamlessdocs.com/api/form/CO1708XXXXXXXXXXXXX/elements

您可以按照印刷的说明将安装文件夹添加到您的路径:

  

如果您需要首先在PATH中运行此软件:echo'export PATH =“ / usr / local / opt / curl / bin:$ PATH”'>>〜/ .bash_profile

或者,您可以将其与自制软件强制链接:

brew link curl --force

但这需要您自担风险:)