Google chrome S3 CORS无法在Chrome中处理JQuery Ajax请求

Google chrome S3 CORS无法在Chrome中处理JQuery Ajax请求,google-chrome,jquery,amazon-s3,amazon-web-services,cors,Google Chrome,Jquery,Amazon S3,Amazon Web Services,Cors,我有以下资料: 我添加了CORS配置,如下所示: 提出请求后,我的chrome控制台会抱怨: XMLHttpRequest cannot load http://my-bucket.s3-website-eu-west-1.amazonaws.com/. Origin http://www.jd.test.com:8000 is not allowed by Access-Control-Allow-Origin. 如果您能提供任何关于为何未提出POST请求的帮助,我们将不胜感激 谢谢 我也将

我有以下资料:

我添加了CORS配置,如下所示:

提出请求后,我的chrome控制台会抱怨:

XMLHttpRequest cannot load http://my-bucket.s3-website-eu-west-1.amazonaws.com/. Origin http://www.jd.test.com:8000 is not allowed by Access-Control-Allow-Origin.
如果您能提供任何关于为何未提出POST请求的帮助,我们将不胜感激


谢谢

我也将深入探讨这一点。你试过改变允许的方法吗?文件上载使用PUT not POST完成

--编辑


我真傻。我收到403个禁止的PUT请求。POST请求提供400个状态代码。

我刚刚编写了一个简单的教程,它使用rails,但可以轻松地转换为任何其他服务器框架。
上传由awesome处理。
和。

您的CORS配置必须包含端口号,因为端口号是源代码的一部分,请参见,例如,

我通过将S3存储桶上我的CORS配置中的
AllowedHeader
字段设置为
*
来解决此问题

以下是我的完整CORS S3配置:

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

*
邮递
3000
*

Hi。似乎chrome阻止了我的请求,所以问题可能出在客户端。我仔细研究了一下Javascript代码,发现手动添加
内容类型:multipart/form data
头(使用$.ajax()beforeSend回调)阻止了Chrome阻止我的请求。然而,找到一个解决方法只会让我遇到其他更大的问题。所以我不再追求这种方法了。但是如果你使用cors上传文件成功了,一定要告诉我@Himerzi您将与HTML页面相关的XML CORS代码放在哪里?我很想帮你,但我一点都不懂XML。还有,你说的这些“其他更大的问题”是什么?同样,如果可能的话,我愿意提供帮助。@Timperson XML CORS代码位于服务器上,而不是HTML页面。更大的问题是JQuery不支持AJAX文件上传。它们受HTML5支持,但是我找不到一个插件/简单的方法来利用这一点,而且似乎存在一些兼容性问题。以支持IE+其他浏览器的方式自己实现这一点似乎不是一项简单的任务。看起来jQuery可以做CORS,只需谷歌一下,你就会发现很多演示。虽然我同意与旧浏览器兼容似乎是一个严重的问题。我正在使用它,但只是不知道如何使用它来进行S3-CORS连接。如果您感兴趣,可以帮助您使用此插件的其他部分。即使AllowedOrigin是*?在这种情况下,是的,因为第一条带“*”的规则不相关!对jd.test.com:8000的ajax请求没有“x-requested-with”头(或者jquery会自动添加这个头吗?)。因此,第一条规则不适用。第二条规则也不适用,因为在这里,AllowedOrigin不匹配。因此,您的规则中没有一条说“是”,因此请求被拒绝。
XMLHttpRequest cannot load http://my-bucket.s3-website-eu-west-1.amazonaws.com/. Origin http://www.jd.test.com:8000 is not allowed by Access-Control-Allow-Origin.
<?xml version="1.0" encoding="UTF-8"?>
<CORSConfiguration xmlns="http://s3.amazonaws.com/doc/2006-03-01/">
    <CORSRule>
        <AllowedOrigin>*</AllowedOrigin>
        <AllowedMethod>POST</AllowedMethod>
        <MaxAgeSeconds>3000</MaxAgeSeconds>
        <AllowedHeader>*</AllowedHeader>
    </CORSRule>
</CORSConfiguration>