【问题标题】:OCI ObjectStorage -- How to enable CORS for a bucket?OCI ObjectStorage -- 如何为存储桶启用 CORS?
【发布时间】:2022-01-01 22:52:56
【问题描述】:

我需要帮助来弄清楚如何在对象存储桶上启用 CORS (https://developer.mozilla.org/en-US/docs/Web/HTTP/CORS)?

【问题讨论】:

    标签: oracle cors object-storage oracle-cloud-infrastructure


    【解决方案1】:

    目前,OCI ObjectStorage 本机和 Swift API 已启用跨域资源共享。

    ➜  ~ git:(master) ✗ curl -I https://objectstorage.us-phoenix-1.oraclecloud.com
    HTTP/1.1 404 Not Found
    Date: Wed, 12 Dec 2018 01:52:00 GMT
    Connection: keep-alive
    opc-request-id: 286901e2-4180-812c-2779-18b415009904
    Access-Control-Allow-Origin: *
    Access-Control-Allow-Methods: POST,PUT,GET,HEAD,DELETE,OPTIONS
    Access-Control-Allow-Credentials: true
    Access-Control-Expose-Headers: Access-Control-Allow-Credentials,Access-Control-Allow-Methods,Access-Control-Allow-Origin,Connection,opc-client-info,opc-request-id
    

    【讨论】:

    • 我们如何启用它以便可以从浏览器 AJAX 调用中使用预签名的 url>
    • 这根本不能回答问题。
    【解决方案2】:

    遗憾的是,Oracle 的对象存储似乎不支持 CORS 标头(也不支持 ACLS - 可耻)。

    如果您正在为私有存储桶中的文件生成预签名 URL,您可以使用“Sec-Fetch-Mode”请求标头来了解浏览器是否会检查 CORS 文件。

    查看详情:https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Sec-Fetch-Mode

    因此您可以执行以下操作:

    如果 Sec-Fetch-Mode = cors,您应该将文件下载到您的服务器,然后将其发送到浏览器(这样文件来源将与您的应用程序相同)。

    如果不是,那么您可以生成一个预签名的 URL 并将浏览器重定向到它。

    最后一件事,IE 和 Safari 浏览器不会发送“Sec-Fetch-Mode”标头,即使它们仍然检查 cors,所以在他们的情况下,通过您的服务器发送文件的解决方案是完成的。

    有关预签名 URL 的更多信息:https://docs.aws.amazon.com/AmazonS3/latest/userguide/ShareObjectPreSignedURL.html

    【讨论】:

      猜你喜欢
      • 2016-07-24
      • 2020-07-16
      • 2021-03-31
      • 2017-09-21
      • 2021-06-30
      • 2017-09-21
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多