自分の管理していないサーバA上にある画像ファイルを自分の作ってるウェブアプリのCanvasに描いて、かつ編集結果をエクスポートしたい
ところが
CORS による許可なしに他のオリジンから読み込んだ何らかのデータをキャンバスに描画すると、キャンバスは汚染されてしまいます。汚染されたキャンバスは安全とみなされなくなり、そのキャンバスから画像データを取得しようとすると、例外が発生するでしょう。
実際サーバAはこんなヘッダを返してくる
access-control-allow-origin: https://gyazo.com
そこで
- 自分でプロキシサーバBを立てる
- Bにリクエストを投げると、Aにリクエストを投げる
- Bはそのレスポンスヘッダに Access-Control-Allow-Origin ”*” をつけて返す ってのを考えた
解決→キャンバス汚染解決編
---以下、過去の考察
このBをAmazon CloudFrontでできないかな、自前で実装しないで手軽に使えるやつがないかな、プロキシするものは画像だけだし、その画像は更新されたりしないので、CDN的なやつでできないかなーという気持ち
CloudFrontでオリジンサーバをAにすると、BにアクセスしてAのコンテンツを得ることはできたが、サーバAが自分のドメイン以外からのアクセスに301 Moved Permanentlyを返してくる。
うーむ
- AWS LambdaでサーバAから画像をダウンロードして返す
- これにAPI GatewayでHTTP(S)の口をつける
- それをCloudFrontで1年くらいキャッシュする とかかな…