前提・実現したいこと
PythonのフレームワークFlaskでCORS対応のAPIを作成しています。
POST時にCORSでエラーが発生しています。
POST時もやり取りできるようしたいです。
発生している問題・エラーメッセージ
コンソールログに以下のエラーが出力されています。
Access to XMLHttpRequest at 'http://xxx.xxx.xxx:8000/users' from origin 'http://localhost:3000' has been blocked by CORS policy: No 'Access-Control-Allow-Origin' header is present on the requested resource. POST http://192.168.21.47:8000/users net::ERR_FAILED
該当のソースコード
python
1from flask import Flask, jsonify, request, make_response 2from flask_cors import CORS 3from models.setting import session 4from models.schema import User 5from controllers import usercontroller 6 7app = Flask(__name__) 8CORS(app) 9 10@app.route('/users/create') 11def store(): 12 return 200 13 14@app.route('/users', methods=['POST']) 15def createUsers(): 16 user = User() 17 user.user_id = request.form['loginId'] 18 user.card_id = request.form['cardId'] 19 user.name = request.form['name'] 20 session.add(user) 21 session.commit() 22 return 200
試したこと
- CORSパッケージのインストール、「CORS(app)」を追加
→ GETは上手くいくようになったが、POSTが上手くいかない。
- CORS(app)に初期値を追加
→ CORS(app, allow_headers="Content-Type")
→ 動作に変化なし、そもそも初期値が"*"
のため指定する意味なし
→ CORSの公式ドキュメント
→ 参考サイト
- CORSを使わず、直接記載
→ GETは上手くいくようになったが、POSTが上手くいかない。
→ (参考サイト)[https://qiita.com/jgs1202/items/f871f7dd7cc389c09d14]
@api.after_request def after_request(response): response.headers.add('Access-Control-Allow-Origin', '*') response.headers.add('Access-Control-Allow-Headers', 'Content-Type,Authorization') response.headers.add('Access-Control-Allow-Methods', 'GET,PUT,POST,DELETE,OPTIONS') return response
回答1件
あなたの回答
tips
プレビュー