【问题标题】:Following a redirect in cURL without including headers在 cURL 中进行重定向而不包含标头
【发布时间】:2020-02-04 09:33:11
【问题描述】:

我有以下 cURL 命令:

curl -H "Authorization: token $GITHUB_TOKEN" \
    -H "Accept: application/octet-stream" \
    $TARBALL_ASSET_URL -O $filename

$TARBALL_ASSET_URL 是附加到 GitHub 版本的资产的 URL。当我点击此端点时,GitHub 会以 302 重定向响应到预签名的 Amazon S3 下载 URL。但是,当它到达该 URL 时,cURL 包含原始的 Authorization 标头,我用它来使用 GitHub API 进行身份验证。然后 S3 服务器看到 Authorization 标头并拒绝该请求,因为 UR 已经有一个签名并且 AWS 拒绝任何包含多次身份验证尝试的请求。

curl 是否支持确保指定的标头仅用于重定向链中的第一个请求?还是我应该不遵循重定向并作为 curl 命令手动执行此操作?

【问题讨论】:

    标签: curl


    【解决方案1】:

    This question 与提出的这个问题并不完全重复,但它与我的特定用例重复。事实证明,我使用的是 cURL v7.54,从 v7.58 开始,出于安全原因,Authorization 标头从不在重定向时传递。

    【讨论】:

      【解决方案2】:

      您可以在命令中添加 -L(跟随重定向)。所以它会是:

      curl -L -H "Authorization: token $GITHUB_TOKEN" \
          -H "Accept: application/octet-stream" \
          $TARBALL_ASSET_URL -O $filename
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2021-07-22
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多