MotoJapan's Tech-Memo

技術めも

【flask】Replyヘッダーに「Access-Control-Allow-Origin」を追加する【お家IT#8】

本件の実装の一部 
motojapan.hateblo.jp

前回の続き 
motojapan.hateblo.jp

目次 

前回は、base64でバックエンドに画像を送信したが、次のエラーが表示れている。

XMLHttpRequest cannot load https://192.168.0.100:12345/hoge_image_processing. 
No ´Access―Control―Allow―Origin’ header is present on the requested resource. 
Origin 'https://192.168.0.100:12345' is therefore not allowed access.

結局は、バックエンドが返信してくるパケットのreplay headerに「Access―Control―Allow―Origin」がないというエラー。

対策

Decoratorを使うと簡単にheaderに´Access―Control―Allow―Origin’と設定できる。
参考資料のコードを参考にすると動く。
(私の環境ではうまく動かない関数があったりしたので、片っ端から修正)

@crossdomainの使い方は下記の通り。

...
@app.route('/hoge_image_processing', methods=['POST'])
@crossdomain(origin='*')
def image_processing():
    ...

これで簡単にヘッダーに必要情報が付加でき、エラーも解消された。
次回は、画像処理結果を通知するために使用する、flask->javascriptへのjsonデータ返信について纏める。