AWS S3文件在浏览器上传W / Signed URL时上传超时

我一直试图让这个工作2天。 我可以从我的节点服务器获取带有我的存储桶的凭证和文件信息的签名URL,但是当我尝试使用签名的URL上载文件时,我超时了。 这里是一些代码:

var AWS_ACCESS_KEY = process.env.AWS_ACCESS_KEY; var AWS_SECRET_KEY = process.env.AWS_SECRET_KEY ; var S3_BUCKET = process.env.S3_BUCKET; exports.getS3Credentials = function(req, res) { aws.config.update({accessKeyId: AWS_ACCESS_KEY, secretAccessKey: AWS_SECRET_KEY}); var s3 = new aws.S3(); // The date is to help avoid overwriting var s3Key = Date.now() + req.query.file_name; var s3_params = { Bucket: S3_BUCKET, Key: s3Key, Expires: 60, ContentType: req.query.file_type, ACL: 'public-read' }; s3.getSignedUrl('putObject', s3_params, function(err, data) { if (err) { console.log(err); } else { var return_data = { signed_request: data, url: 'https://'+S3_BUCKET+'.s3.amazonaws.com/'+s3Key }; res.json(return_data); } }); }; 

我通过来自Angular的GET请求调用上述方法:

 var fd = new FormData(); $scope.getS3Credentials = function(item){ $http.get('/api/programs/gets3credentials?file_name=' + item.name + '&file_type=' + item.type).then(function(res) { $scope.program.profileImageURL = res.data.url; $scope.credentialsUrl = res.data.signed_request; }); $scope.imageFile = item; fd.append('file', item); }; 

一切似乎都很顺利,直到这里。 然后我使用一个PUT请求来上传:

 $http.put($scope.credentialsUrl, fd, { transformRequest:angular.identity, headers:{'Content-Type':undefined} }).then(function(d) { console.log(d); // Redirect after save program.$save(function (response) { // Clear form fields clearFields(); $location.path('programs/' + response._id); }, function (errorResponse) { $scope.error = errorResponse.data.message; }); }, function(err){ console.log(err) }); 

在此之后,我不会犯错,直到它超时。 我已经循环了几种方法来尝试上传,但都返回相同的结果。 可以权限是这个的原因吗?