我在 DigitalOcean Spaces UI 中添加了添加的 CORS 配置,如下所示:
我仍然沒有在來自瀏覽器的物件請求中獲得access-control-allow-origin標頭。
當物件從我的后端上傳時,“ public-read ”被設定為 ACL。
我期待,當物件(在我的例子中是影像)請求是從我的瀏覽器中的網路應用程式發出時,它的回應頭應該有access-control-allow-origin: http://my.machine.localhost.
當畫布組件具有來自非原始來源的影像時,這是HTML canvas toDataURL()的硬性要求。
uj5u.com熱心網友回復:
首先是本地主機問題
DO (DigitalOCean) 不允許您在 CORS 源欄位中配置 localhost。為此,您可以更新您/etc/hosts的本地主機以提供可接受的名稱。我有
127.0.0.1 my.machine.localhost
通過這種方式,可以輕松地在 DO 空間 CORS 設定中進行配置,并且在瀏覽器中點擊 my.machine.localhost 應該會打開在 localhost 上運行的應用程式(我在埠 80 上運行我的應用程式)。
二、CORS頭檔案
禁用 CDN,直到您解決問題或必須多次清除快取。使用curl或httpie或類似的東西來測驗,因為瀏覽器傾向于快取物件。
我假設物件是使用public-readACL上傳的。
現在使用 curl 或 httpie 檢查請求和回應標頭。
$ http -v https://***.***.digitaloceanspaces.com/static/images/logo.png
這是棘手的部分 - 即使您配置了 CORS,回應也不會包含access-control-allow-origin標頭。要使其正常作業,您需要Origin在請求中設定標頭,該標頭需要與存盤桶的 DO Spaces UI 中至少一個已配置的來源相匹配。
$ http -v https://***.***.digitaloceanspaces.com/static/images/logo.png "Origin:http://my.machine.localhost"
這將回傳access-control-allow-origin,并access-control-allow-methods根據您的配置。
DO 空間實作與 AWS S3 相同的 API。所以卡住的時候最好找S3檔案。我在 AWS S3 CORS 檔案https://docs.aws.amazon.com/AmazonS3/latest/userguide/cors-troubleshooting.html 中找到了這個
如果標頭丟失,Amazon S3 不會將該請求視為跨源請求,并且不會在回應中發送 CORS 回應標頭。
網上有很多教程推薦使用 s3cmd 并使用通配符設定 CORS *- 在執行這些操作之前要三思,因為它非常不安全。
轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/386952.html
標籤:javascript 反应 亚马逊-s3 帆布 数字海洋
