Maison  >  Questions et réponses  >  le corps du texte

Résoudre les problèmes avec les requêtes POST dans Flask et Python

<p> <pre class="brush:php;toolbar:false;">app = Flask(__name__) CORS (application) @app.post("/api/clients/") def addClient() : données = ouvert('./src/clients.json', 'w+') clients = json.load (données) req = json.loads (requête.données) clients.append(req) json.dump (clients, données) données.close() return req</pre> <p> API :</p> <pre class="brush:php;toolbar:false;">let u = "http://url/api/clients/n1/" soit b = { "client": "n1", "détails" : { "adresse1": "Ligne1", "adresse2": "ligne2", "ville": "ville", "e-mail" : "@", "tps": "gstno" } } const addStudent = async (us, c) => { réponse const = attendre chercher (nous, { méthode : "POST", en-têtes : { "Content-Type": "application/json", }, corps : c, }); const data = attendre réponse.json(); console.log(données); } ; addStudent(u, b);</pre> <p>浏览器控制台显示以下错误:</p> <blockquote> <p>访问'url/api/clients/'的fetch被阻止了, et 'null'没有'Access-Control-Allow-Origin'头.求,请将请求的Il s'agit de "no-cors" pour CORS.</p> </blockquote> <p>Pour référence, voici les erreurs mentionnées dans la ligne de commande Flask : </p> <blockquote> <p>127.0.0.1 - - [26 mars 2023 18:09:05] "POST /api/clients/ HTTP/1.1" 500 - Traceback (dernier appel le plus récent) : Fichier 'E:All_CodesWEB_DEVexcel-o-metervenvlibsite-packagesflaskapp.py', ligne 2551, <strong>Appel</strong> retourner self.wsgi_app (environnement, start_response) Fichier "E:All_CodesWEB_DEVexcel-o-metervenvlibsite-packagesflaskapp.py", ligne 2531, dans wsgi_app réponse = self.handle_exception(e) Fichier 'E:All_CodesWEB_DEVexcel-o-metervenvlibsite-packagesflask_corsextension.py', ligne 165, dans enveloppé_function Renvoie cors_after_request(app.make_response(f(*args, **kwargs))) Fichier "E:All_CodesWEB_DEVexcel-o-metervenvlibsite-packagesflaskapp.py", ligne 2528, dans wsgi_app réponse = self.full_dispatch_request() Fichier "E:All_CodesWEB_DEVexcel-o-metervenvlibsite-packagesflaskapp.py", ligne 1825, dans full_dispatch_request rv = self.handle_user_exception(e) Fichier 'E:All_CodesWEB_DEVexcel-o-metervenvlibsite-packagesflask_corsextension.py', ligne 165, dans enveloppé_function Renvoie cors_after_request(app.make_response(f(*args, **kwargs)))</p> </blockquote> <p><strong>Dois-je ajouter un en-tête spécifique comme mentionné ci-dessus, ou ai-je un bug du côté de Flask ? </strong> La dernière ligne de la ligne de commande semble donner une erreur CORS. </p>
P粉476475551P粉476475551413 Il y a quelques jours531

répondre à tous(1)je répondrai

  • P粉459578805

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

    Pouvez-vous l'essayer et le vérifier ?

    Méthode 1

    Installer flask-cors

    pip install -U flask-cors

    Puis une fois l'application initialisée, initialisez flask-cors avec les paramètres par défaut :

    from flask import Flask
     from flask_cors import CORS 
    
     app = Flask(__name__)
     CORS(app)
    
     @app.route("/")
     def helloWorld():
      return "Hello, cross-origin-world!"

    Mise à jour

    Méthode 2

    Si vous ne souhaitez pas utiliser de packages supplémentaires, vous pouvez le faire également

    @app.route('your own route', methods=['GET'])
     def yourMethod(params):
       response = flask.jsonify({'somekey': 'somevalue'})
       # 注意:理想情况下,'*' 应该被替换为你的主机来源
       response.headers.add('Access-Control-Allow-Origin', '*') 
       return response

    Je suggère d'essayer d'utiliser le code suivant pour définir votre point de terminaison

    @app.route("/api/clients/", methods=['POST'])

    au lieu de

    @app.post("/api/clients/")

    Lien de référence - Méthodes http Flask

    répondre
    0
  • Annulerrépondre