ホームページ  >  に質問  >  本文

Flask と Python での POST リクエストの問題の解決

<p>CLIENT を追加するための Flask POST リクエスト ハンドラーを作成しています。 </p> <pre class="brush:php;toolbar:false;">app = Flask(__name__) CORS(アプリ) @app.post("/api/clients/") def addClient(): data = open('./src/clients.json', 'w ') クライアント = json.load(データ) req = json.loads(リクエスト.データ) client.append(req) json.dump(クライアント, データ) data.close() return req</pre> <p>しかし、この Javascript の <code>fetch()</code> API をブラウザで実行すると、次のようになります。 <pre class="brush:php;toolbar:false;">let u = "http://url/api/clients/n1/" b = { とします "クライアント": "n1"、 「詳細」: { "アドレス 1": "行 1"、 "アドレス 2": "行 2"、 "都市": "都市", 「メール」: 「@」、 "gst": "gstno" } } const addStudent = async (us, c) => { const 応答 = await fetch(us, { メソッド: "POST"、 ヘッダー: { "Content-Type": "application/json"、 }、 本体:c、 }); const data = 応答を待ちます.json(); コンソール.ログ(データ); }; addStudent(u, b); <p>ブラウザのコンソールに次のエラーが表示されます: </p> <ブロック引用> <p> オリジン「null」に「Access-Control-Allow-Origin」ヘッダーがないため、「url/api/clients/」へのアクセス取得はブロックされます。不透明な応答がニーズを満たす場合は、要求のモードを「no-cors」に設定して、CORS によるリソースの取得を無効にします。</p> </blockquote> <p>参考までに、Flask コマンド ラインで言及されているエラーを以下に示します。</p> <ブロック引用> <p>127.0.0.1 - - [2023 年 3 月 26 日 18:09:05] "POST /api/clients/ HTTP/1.1" 500 - トレースバック (最後の呼び出し): ファイル 'E:\All_Codes\WEB_DEV\excel-o-meter\venv\lib\site-packages\flask\app.py'、行 2551、<strong>Call</strong> return self.wsgi_app(environment, start_response) ファイル「E:\All_Codes\WEB_DEV\excel-o-meter\venv\lib\site-packages\flask\app.py」、wsgi_app の 2531 行目 応答 = self.handle_Exception(e) ファイル「E:\All_Codes\WEB_DEV\excel-o-meter\venv\lib\site-packages\flask_cors\extension.py」、行 165、wrap_function cors_after_request(app.make_response(f(*args, **kwargs))) を返す ファイル「E:\All_Codes\WEB_DEV\excel-o-meter\venv\lib\site-packages\flask\app.py」、wsgi_app の 2528 行目 応答 = self.full_dispatch_request() ファイル「E:\All_Codes\WEB_DEV\excel-o-meter\venv\lib\site-packages\flask\app.py」、full_dispatch_request の 1825 行目 rv = self.handle_user_Exception(e) ファイル「E:\All_Codes\WEB_DEV\excel-o-meter\venv\lib\site-packages\flask_cors\extension.py」、行 165、wrap_function Return cors_after_request(app.make_response(f(*args, **kwargs)))</p> </blockquote> <p><strong>上記のように特定のヘッダーを追加する必要がありますか、それとも Flask 側にバグがあるのでしょうか? </strong> コマンドラインの最後の行では CORS エラーが発生しているようです。 </p>
P粉476475551P粉476475551413日前534

全員に返信(1)返信します

  • P粉459578805

    P粉4595788052023-09-03 12:52:58

    試してみて確認してもらえますか?

    方法 1

    flask-cors をインストールします

    リーリー

    次に、アプリケーションが初期化された後、デフォルトのパラメーターを使用して flask-cors を初期化します。 リーリー

    更新

    方法 2

    追加のパッケージを使用したくない場合は、これを行うこともできます

    リーリー

    次のコードを使用してエンドポイントを定義してみてください

    リーリー ### の代わりに ### リーリー

    参考リンク -

    Flask http メソッド

    返事
    0
  • キャンセル返事