【问题标题】:Use jQuery to get non-json object from amazon s3使用 jQuery 从 amazon s3 获取非 json 对象
【发布时间】:2014-02-17 02:17:53
【问题描述】:

我正在尝试使用 jQuery 从 amazonS3 获取文件,但我遇到了可怕的跨域访问策略问题。当前的解决方案是基本上有一个通过接口,使用 php 的 readfile 方法读取文件。我个人不喜欢这个,因为它使用网站数据(如果它是有限的或付费的),我认为直接从 amazon S3 链接获取它会更好。

我查找了可能的解决方案,他们都说要么使用 JSONP 要么使用 CORS。我不想使用 CORS,因为多人使用服务器安装,而且我不希望他们需要设置更多。

我尝试了 JSONP(下面的代码),但我收到了语法错误,因为我没有读取 json 数据。我正在阅读 text/plain 或 application/octet-stream。

这是我尝试使用的 json 代码:(希望格式正确)

$.ajax({
    url: '<non-json file url goes here>',
    dataType: 'jsonp',
    jsonp: true,
    jsonpCallback: 'content'
}).done(function (data) {
    if (data.enabled === true) {
        alert("done");
    }
});

除了 CORS 和当前方法之外,还有什么方法可以做我想做的事吗?

编辑 2014 年 1 月 26 日: 说真的,请停止建议CORS。我知道我可以使用 CORS,我在问除了 CORS 是否还有其他方法。谢谢。

【问题讨论】:

    标签: php jquery amazon-s3 jsonp


    【解决方案1】:

    你为什么不能使用 CORS,你所要做的就是在你的页面的响应中获取另一个标题,你应该能够逐页执行,对吧?

    以下是一些建议的方法,具体取决于您使用的服务器语言:

    http://enable-cors.org/server.html

    【讨论】:

    • 因为使用自己的 S3 数据存储在服务器上安装程序的人必须手动配置 CORS,我不希望他们这样做。
    【解决方案2】:

    除非我看错了这个场景,否则“他们”(安装/运行您的代码的人)不必在他们的服务器上进行 CORS 配置——“您”在被访问的存储桶上做。

    http://docs.aws.amazon.com/AmazonS3/latest/dev/cors.html

    CORS 检查外部数据将来自的站点...查看它是否允许来自尝试请求数据的网页域的跨域请求...所以它是 bucket 需要为 CORS 而不是 Web 服务器配置。

    这有帮助吗?

    【讨论】:

    • 我明白这一点,但他们使用自己的 S3 数据和存储桶。这不仅仅是我创建的一个存储桶,他们为他们的特定情况创建了自己的 S3 存储桶。目前,这意味着他们无论如何都必须在一定程度上配置 s3,但我不希望他们也必须配置 CORS。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-09-12
    • 1970-01-01
    • 2018-09-24
    相关资源
    最近更新 更多