我需要帮助来弄清楚如何在对象存储桶上启用 CORS( https://developer.mozilla.org/en-US/docs/Web/HTTP/CORS )?
问问题
628 次
2 回答
0
目前,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
于 2018-12-12T01:51:15.930 回答
0
可悲的是,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 浏览器即使仍然检查 cors 也不会发送“Sec-Fetch-Mode”标头,因此在他们的情况下,通过您的服务器发送文件的解决方案是完成的。
有关预签名 URL 的更多信息:https ://docs.aws.amazon.com/AmazonS3/latest/userguide/ShareObjectPreSignedURL.html
于 2022-01-01T10:06:43.250 回答