我一直試圖在使用https的網站上實現ajax上傳到亞馬遜的S3,所以我當然也必須上傳到S3的安全版本https://bucket.name.s3.amazonaws.com。但是,當我嘗試上傳時,我最終得到一個錯誤,表明該網站的安全證書無效。從我正在閱讀的內容來看,這是預期的,因爲亞馬遜的s3證書只覆蓋一個子域(http://shlomoswidler.com/2009/08/amazon-s3-gotcha-using-virtual-host.html)。因此,我將我上傳的網址更改爲https://s3.amazonaws.com/bucket.name,這也是我讀過的內容應該相當於https://bucket.name.s3.amazonaws.com。但是,嘗試上傳給我301永久重定向錯誤。我知道我的代碼是有效的,因爲當我試圖上傳到名稱中沒有點的桶時,它到達https://bucket.s3.amazonaws.com,但它通過很好,但是當我嘗試https://s3.amazonaws.com/bucket時它也得到301。S3在https上點上點名桶
<form id="form">
<input type="hidden" name="key" value="..." />
<input type="hidden" name="acl" value="public-read" />
<input type="hidden" name="X-Amz-Credential" value="..." />
<input type="hidden" name="X-Amz-Algorithm" value="..." />
<input type="hidden" name="X-Amz-Date" value="..." />
<input type="hidden" name="Policy" value="..." />
<input type="hidden" name="X-Amz-Signature" value="..." />
<input type="hidden" name="success_action_redirect" value="..." />
<input id="upload" type="submit" value="Upload" class="submit-upload clearfix button blue save"/>
</form>
<script type="text/javascript">
document.getElementById('upload').addEventListener('click', function (e) {
e.preventDefault();
var formData = new FormData(document.getElementById('form'));
var xhr = new XMLHttpRequest();
xhr.open('POST', 'https://s3.amazonaws.com/bucket.name/', true);
xhr.send(formData);
});
</script>
所以我的問題是:有沒有一種方法可以實現ajax上傳到名爲https的點上的S3存儲桶?
你的存儲桶在哪個區域?你這樣做的方式只適用於美國標準桶。 –
@ Michael-sqlbot us-west-2 – Kai