繁体   English   中英

Amazon S3 CORS请求无法上传文件

[英]Amazon S3 CORS request fails for uploaded files

我正在使用Amazon S3作为后端。 我已将存储桶正确配置为允许CORS访问我域中的任何内容。 我已经测试了它适用于常规文件 (即通过Amazon AWS控制台或使用S3命令行工具上传的文件 )。

我的应用程序还将JSON文件本身上传到S3存储桶。 有趣的是,它需要正确配置CORS才能使上传成功。 可以,我的JSON文件放入存储桶中。

问题是,当我对以前上传的这些文件发出CORS GET请求(jquery $.ajax )时,请求失败,并显示典型消息

No 'Access-Control-Allow-Origin' header is present on the requested resource.

请注意,对于同一存储桶,相同路径中的其他文件,应用程序并未上传这些文件,而是通过控制台或命令行工具,该请求成功。

为什么会这样呢?

我的CORS配置:

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

在jQuery文档的某个地方,您可以找到$ .ajax的选项。

jQuery.support.cors = true;
...
$.ajax(
    url,
    {
        crossDomain: true,
        data: {
            sampleData
        },
        success: function() {
            alert('Yeaaahhh')
        },
        error: function(a,b,c) {
            alert('failed');
        },
        type: 'post'
    }
);

但是更好的方法是使用XMLHTTPRequest。 喜欢:

var xhr = new XMLHTTPRequest;
xhr.open('POST', url);
xhr.onreadystatechange = function(state, status){
    //do something
};

xhr.onload = function(event){
    //do something
};

xhr.onerror = function(event){
    //do something
};

xhr.send(data);

映入眼帘。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM