見出し画像

Flutter WebでHosting Domain以外の画像が表示されない問題の解決方法

はじめに

@yutakikuchi_です。
FlutterでWebサービスを開発してHostingした際に、他のDomainにResourceがある画像が表示されないという問題が発生したので、解決方法を書きます。

解決方法

通常のFlutter Web hostingだと他ドメインの画像がCORS Policyによって撥ねられるのですが、それを解決する方法は上のURLに書いてあります。

Host your images in a CORS-enabled CDN.

僕の場合は、Flutter WebのHosting先がFirebaseだったので、FirebaseにDeployをするときに設定ファイルであるfirebase.jsonに対して、CORSリクエストを許可する設定を追記しました。下記はサンプルですが、Access-Control-Allow-Originを*で指定するのはセキュリティ的に良くないとされているので、適切な値を設定したほうが良いです。

"headers": [
     {
       "source" : "**",
       "headers" : [
         {
           "key" : "Access-Control-Allow-Origin",
           "value" : "*"
         }
       ]
     }
   ]
Lack control over the image server? Use a CORS proxy.
Use <img> in a platform view.

FirebaseでResponse Headerを追加する以外にもCORSのProxyサーバーを中継する、具体的にはCloudFlare, Firebase Functionsなど。またはFlutterのコーディングの中でHtmlElementViewを使って<img>タグを使うなど方法があるようです。

この記事が気に入ったらサポートをしてみませんか?