我有一個離子/角度js web應用程序,它通過base64編碼將文件上傳到django rest框架。然後,該文件將通過django-storage(1.5.1)庫的幫助保存到AWS S3存儲桶中。AWS S3 Base64文件上傳不能在iPad或Android上運行,但在筆記本電腦上運行Safari或Chrome
在Chrome(Windows)或Safari(Macbook)上訪問webapp並上傳圖片和文件效果很好。
訪問在Chrome(Android手機)或Safari(新iPad)的Web應用程序,失敗,一個錯誤信息:
XMLHttpRequest cannot load [api url]. Origin [webapp url] is not allowed by Access-Control-Allow-Orign.
顯然,這是一個問題CORS,對不對?但是我可以上傳表單輸入數據......這是文件上傳(JSON Restful PUT中的base64內容),這似乎是拋出錯誤的區別。
爲了完整起見,我的AWS S3 CORS配置爲:
<?xml version="1.0" encoding="UTF-8"?>
<CORSConfiguration xmlns="http://s3.amazonaws.com/doc/2006-03-01/">
<CORSRule>
<AllowedOrigin>*</AllowedOrigin>
<AllowedMethod>GET</AllowedMethod>
<AllowedMethod>PUT</AllowedMethod>
<AllowedMethod>POST</AllowedMethod>
<MaxAgeSeconds>3000</MaxAgeSeconds>
<AllowedHeader>Authorization</AllowedHeader>
</CORSRule>
任何想法或可能是問題的一個方向輕推?
多了一個理由,以避免base64編碼圖像 – e4c5
@ e4c5感謝您的評論。我對你的觀點感興趣。爲什麼不推薦base64編碼? – aero
額外的計算來編碼解碼。無法緩存。文件大小增加30% – e4c5