无法访问gem-fury

时间:2016-12-14 18:08:57

标签: amazon-web-services amazon-s3 composer-php gem-fury

我已经通过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

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

任何帮助都会被认定

1 个答案:

答案 0 :(得分:1)

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

长答案:它无法正常工作的原因是Composer CLI中存在错误。在该特定用例中,当Composer处理Gemfury从您的私有Authorization repo重定向到安全S3下载时,它会在您的Gemfury令牌中包含400 Bad Request标头。此标头与S3的身份验证模型冲突,并产生Authorization响应。

在从一个主机到另一个主机的重定向上重新发送auth.json标头是一个相当重要的安全问题,我建议您重置Gemfury令牌并停止使用filteredData = originalData.filter(function(item) { var i, ntest, cKey, cValue, flag; for(i=0, ntest=params.length; i<ntest; ++i) { cKey = params[i][0]; cValue = params[i][2]; switch(params[i][1]) { case "equals": if(item[cKey] != Number(cValue)) return false; break; case "exact": if(item[cKey].toString() != cValue) return false; break; } } return true; }); 身份验证方法,直到此问题得到解决。< / p>