我已经通过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文件(识别出最新版本)
任何帮助都会被认定
答案 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>