0

我已经通过 gem-fury 设置了一个私人作曲家存储库,但是当我尝试下载其中一个包(使用 composer-require)时,我收到以下错误:

  [Composer\Downloader\TransportException]
  The 'https://s3.amazonaws.com:443/gemfury/gems/[SOME_STRING]/[VENDOR][PACKAGE]_[VERSION]_zip?Signature=SIGNATURE&Expires=1481739039&AWSAccessKeyId=[AWS_ACCESS_KEY]' URL could not be accessed: HTTP/1.1 400 Bad Request

PS我知道身份验证有效,因为composer确实收到了package.json文件(最新版本被识别)

任何帮助将不胜感激

4

1 回答 1

1

简短回答:如果您auth.json用于存储 Gemfury 令牌,您可能会看到此问题。目前,解决此问题的唯一方法是将令牌直接嵌入到您的存储库 URL 中composer.json

长答案:它不起作用的原因是 Composer CLI 中的一个错误。在该特定用例中,当 Composer 处理 Gemfury 从您的私有存储php.fury.io库到安全 S3 下载的重定向时,它会包含Authorization带有您的 Gemfury 令牌的标头。此标头与 S3 的身份验证模型冲突,并导致400 Bad Request响应。

在从一个主机重定向到另一个主机时重新发送Authorization标头是一个相当重要的安全问题,我建议您重置您的 Gemfury 令牌并停止使用auth.json身份验证方法,直到此问题得到解决。

于 2017-02-07T09:43:08.213 回答