Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/json/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何通过CORS从AmazonS3下载JSON文件?_Javascript_Json_Amazon S3_Xmlhttprequest - Fatal编程技术网

Javascript 如何通过CORS从AmazonS3下载JSON文件?

Javascript 如何通过CORS从AmazonS3下载JSON文件?,javascript,json,amazon-s3,xmlhttprequest,Javascript,Json,Amazon S3,Xmlhttprequest,我正在尝试使我的javascript代码能够从我的AmazonS3帐户下载json文件。我的S3 CORS配置如下所示: <?xml version="1.0" encoding="UTF-8"?> <CORSConfiguration xmlns="http://s3.amazonaws.com/doc/2006-03-01/"> <CORSRule> <AllowedOrigin>https://www.example.

我正在尝试使我的javascript代码能够从我的AmazonS3帐户下载json文件。我的S3 CORS配置如下所示:

<?xml version="1.0" encoding="UTF-8"?>
<CORSConfiguration xmlns="http://s3.amazonaws.com/doc/2006-03-01/">
    <CORSRule>
        <AllowedOrigin>https://www.example.com</AllowedOrigin>
        <AllowedMethod>GET</AllowedMethod>
    </CORSRule>
</CORSConfiguration>
var req = new XMLHttpRequest();

req.open('GET', 'https://s3.amazonaws.com/mybucket/myfile.json', true);
req.withCredentials = true;
req.onload = function () { ... };
req.onerror = function () { ... };
req.send();
请注意,此示例特定于支持“withCredentials”字段的浏览器

请求失败,状态为404。我已经验证了所请求的S3JSON文件确实是可访问的,并且在浏览器中输入其url时正确显示

有人看到我遗漏了什么吗


更新:我创建了一个简单的新javascript文件来做进一步的测试,测试代码运行良好。所以,上面显示的示例代码可以工作,我只需要确定我的实际代码是如何不同的。很抱歉,我的问题造成了不必要的干扰,但希望代码示例对以后的人有用。

是因为您在HTTP上配置CORS,而在HTTPS上发出请求吗?@Mike Feltman,my domain和Amazon S3都使用HTTPS。我现在澄清了我的问题以表明这一点。谢谢vs.requ.open('GET','',true);这就是我所指的。如果是404,这似乎不是浏览器/CORS问题,至少因为浏览器是强制CORS策略的工具。CORS错误通常不会显示为404。无论如何,将您的代码与它进行比较似乎是正确的,并且没有明显的遗漏。如果Amazon文档对此解释了故障案例的实际情况并提供了故障排除信息,那就太好了……顺便说一句,我不是100%确定
AllowedHeader
的作用,但我假设它设置了CORS
访问控制允许header
header,如果是这样,它的值不能是
*
,而必须是标题名称的显式列表。唯一允许
*
作为值的
访问控制-
标题是
访问控制允许原点