繁体   English   中英

Javascript/JQuery AJAX 和 Amazon S3 GET 请求。 CORS

[英]Javascript/JQuery AJAX and Amazon S3 GET request. CORS

Heroku 上有一个项目,我们使用它作为代理对我们的 Amazon S3 存储进行一些调用到存储桶。 该项目已退役,因此,我们的电话不起作用。 我们正在使用 jQuery AJAX 向亚马逊请求传递我们的存储桶名称,但当然我们在浏览器控制台中收到 CORS 错误。 我看到亚马逊最近实施了一些 CORS Header 权限,但我似乎无法弄清楚它是否是 CORS 让亚马逊允许来自域的 PULLS 和 PUTS 请求。

我们当前的 JS/jQuery 调用是:

 $.ajax({
    //url:'https://cors-anywhere.herokuapp.com/https://s3.amazonaws.com/MyBucketName',
    url:'https://s3.amazonaws.com/MyBucketName/',
    type: 'GET',
     beforeSend: function(xhr){xhr.setRequestHeader('origin', 'x-requested-with');},
}).done(function(xml) {
 //Show the data on the page
 });

我试图使用 Cloudberry 通过他们的接口设置请求标头。 但我似乎找不到它的组合,所以我将 go 直接转到 Amazon S3 并设置请求 GET 设置。 但同样,我不知道这是否允许从域到存储桶的 GET 请求。 我当然想将它锁定到我们的域中,只允许那些 GET 请求。 如果有人对 Amazon S3 请求 header JSON 有任何指示以允许 GET 请求,这将非常有帮助。 或者我是否真的需要构建一个完整的代理来执行 CORS 请求。 这就是我认为亚马逊在他们这边实施 CORS 应该实现的目标。

如果其他人有兴趣,这是解决此问题的方法。 简单的解决方案。

Javascript

$.ajax({
url:'https://s3.amazonaws.com/MyBucketName/',
type: 'GET',
// beforeSend: function(xhr){xhr.setRequestHeader('origin', 'x-requested-with');},// Remove this.  
 }).done(function(xml) {
  //Show the data on the page
  // build HTML list of elements or whatever you want to do
});

Go 到此页面: https://docs.aws.amazon.com/AmazonS3/latest/userguide/enabling-cors-examples.ZFC35FDC70D5FC69D269883A822C7A53

在 Amazon S3 控制台中用户指南的第 5 步中,输入此 JSON:

[
 {
    "AllowedHeaders": [
        "*"
    ],
    "AllowedMethods": [
        "GET"
    ],
    "AllowedOrigins": [
        "https://www.yourdomain.com"
    ],
    "ExposeHeaders": []
  }
 ]

暂无
暂无

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

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