Javascript Can';t使用https将文件上载到S3(http工作正常)

Javascript Can';t使用https将文件上载到S3(http工作正常),javascript,nginx,https,amazon-s3,Javascript,Nginx,Https,Amazon S3,当我的网站使用https连接时,我无法将文件上载到S3。同样的代码在没有ssl的情况下可以完美地工作。我真的很感激任何关于为什么会发生这种情况以及如何解决它的指导。 这是执行上载的函数: uploadAvatar = function (aws, userId, successCallback) { var imgType = document.getElementById('avatar').files[0].type; var imgExt = document.getElementById

当我的网站使用https连接时,我无法将文件上载到S3。同样的代码在没有ssl的情况下可以完美地工作。我真的很感激任何关于为什么会发生这种情况以及如何解决它的指导。 这是执行上载的函数:

uploadAvatar = function (aws, userId, successCallback) {
var imgType = document.getElementById('avatar').files[0].type;
var imgExt = document.getElementById('avatar').files[0].name.substr(document.getElementById('avatar').files[0].name.lastIndexOf('.'));
var dataURL = document.getElementById('avatar-canvas').toDataURL(imgType, 1.0);
var blob = dataURItoBlob(dataURL, imgType);
var fd = new FormData();

var key = 'avatar/' + aws.fileName + imgExt;

fd.append('key', key);
fd.append('acl', 'public-read');
fd.append('Content-Type', imgType);
fd.append('AWSAccessKeyId', aws.awsKey);
fd.append('policy', aws.policy)
fd.append('signature', aws.signature);

fd.append("file", blob);
var xhr = new XMLHttpRequest();

xhr.addEventListener("load", uploadComplete, false);
xhr.addEventListener("error", uploadFailed, false);
xhr.addEventListener("abort", uploadCanceled, false);

xhr.open('POST', '//' + aws.bucket + '.s3.amazonaws.com/', true); //MUST BE LAST LINE BEFORE YOU SEND 
xhr.send(fd);

function uploadComplete(evt) {
    successCallback.call(evt, key);
}

function uploadFailed(evt) {
    alert('upload error.');
    console.log(evt);
}

function uploadCanceled(evt) {
    alert("The upload has been canceled by the user or the browser dropped the connection.");
}
}

这是我尝试上载firefox控制台时的图像(查看请求甚至没有得到响应): 这是上面代码在我的控制台中记录的错误对象:

我在S3中的CORS配置中确保http和https域都能够放置对象。
我正在使用Nginx和端口3000的反向代理,我在那里为Meteor项目提供服务。这可能不是问题所在,但如果有帮助,我可以显示nginx配置。

如果您的bucket名称(在您的示例中是aws.bucket)有点,那么您在DNS表单中使用https时会遇到问题,https上载需要使用区域和路径表单。如果我更改
xhr.open('POST','/'+aws.bucket+'.s3.amazonaws.com/',true),您可以阅读一篇文章

谢谢@wayne)
xhr.open('POST','https://s3.amazonaws.com/“+aws.bucket+”/”,真)它现在给我以下错误:
MLHttpRequest无法加载https://s3.amazonaws.com/fretalaobjectphotos/. 请求的资源上不存在“Access Control Allow Origin”标头。起源'https://freta.la'因此不允许访问。
我使用的是带点的桶,但改为不带点的桶。它说不允许我的域访问资源,但我已经设置了所有COR。有什么想法吗?