传递OPTIONS后S3 CORS上传中止

时间:2013-02-18 19:06:26

标签: upload amazon-s3 cors put

我正在尝试从浏览器上传文件但根本不起作用。

我的存储桶CORS配置是:

<?xml version="1.0" encoding="UTF-8"?>
 <CORSConfiguration xmlns="http://s3.amazonaws.com/doc/2006-03-01/">
    <CORSRule>
        <AllowedOrigin>*</AllowedOrigin>
        <AllowedMethod>PUT</AllowedMethod>
        <AllowedMethod>POST</AllowedMethod>
        <AllowedMethod>GET</AllowedMethod>
        <MaxAgeSeconds>3000</MaxAgeSeconds>
        <AllowedHeader>*</AllowedHeader>
    </CORSRule>
</CORSConfiguration>

在我的代码中,我发送的是:

xhr.open('PUT', "http://upload.test.s3.amazonaws.com/" + uploadFile.get("dest") +'?' +   "partNumber=" + (part + 1) +  "&" + "uploadId=" + uploadFile.get("uploadId"), true);
xhr.setRequestHeader("Authorization", uploadFile.get("authorization"));
xhr.setRequestHeader("x-amz-date", uploadFile.get("date"));
xhr.setRequestHeader("Content-Type", uploadFile.get("rawFile").type);
xhr.setRequestHeader("x-amz-acl", "public-read");
xhr.send(chunk);

Ps:uploadFile有一些属性,比如来自服务器的授权密钥和uploadId。

当上传开始时,我通过OPTIONS请求,但Put请求在几秒钟后(通常在发送一些内容百分比后4-5秒)中止。不幸的是它没有反馈而中止。 有谁知道会发生什么?

谢谢!

编辑:基本上我正在使用https://github.com/LearnBoost/knox从分段上传中获取UploadId(如果我将服务器用于整个上传操作,则可以使用)

1 个答案:

答案 0 :(得分:0)

如果您使用CORS授权,服务器似乎无法使用通配符(即“*”):请检查this

您是否尝试在存储桶的AllowedOrigin标头中指定请求域?