Flask-Restful APIをローカルで実行していて、別のポートからJSONを含むPOSTリクエストを送信しています。エラーが発生します
No 'Access-Control-Allow-Origin' header is present on the requested resource.
しかし、私が走ると
curl --include -X OPTIONS http://localhost:5000/api/comments/3
--header Access-Control-Request-Method:POST
--header Access-Control-Request-Headers:Content-Type
--header Origin:http://localhost:8080
私は得る
HTTP/1.0 200 OK
Content-Type: text/html; charset=utf-8
Allow: HEAD, GET, POST, OPTIONS
Access-Control-Allow-Origin: http://localhost:8080
Access-Control-Allow-Methods: DELETE, GET, HEAD, OPTIONS, PATCH, POST, PUT
Vary: Origin
Access-Control-Allow-Headers: Content-Type
Content-Length: 0
これは、「Access-Control-Allow-Origin」を「*」として表示します。 GETは正常に機能しますが、このエラーが発生するのはPOSTです。何が問題になっている可能性がありますか?関連する場合は、フロントエンドでreactを使用してaxiosを介してリクエストしています。
CORS(app, resources={r"/*": {"origins": "*"}})
をflaskアプリに追加する必要があります。
それが問題を解決することを願っています。
flask-Corsのドキュメントでは、これが発生する理由が説明されています
「JSONクロスオリジンを使用する場合、ブラウザはPOSTリクエストに対してプリフライトOPTIONSリクエストを発行します。ブラウザがJSONコンテンツを含むPOSTリクエストを許可するために、タイプの場合、Content-Typeヘッダーを許可する必要があります。これを行う最も簡単な方法は、アプリケーションでCORS_HEADERS構成値を設定することです。
https://flask-cors.readthedocs.io/en/1.9.0/
app.config['CORS_HEADERS'] = 'Content-Type'