Résoudre les problèmes avec les requêtes POST dans Flask et Python
P粉476475551
P粉476475551 2023-09-02 14:08:47
0
1
473

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

API :

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);

浏览器控制台显示以下错误:

访问'url/api/clients/'的fetch被阻止了, et 'null'没有'Access-Control-Allow-Origin'头.求,请将请求的Il s'agit de "no-cors" pour CORS.

Pour référence, voici les erreurs mentionnées dans la ligne de commande Flask :

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, Appel 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)))

Dois-je ajouter un en-tête spécifique comme mentionné ci-dessus, ou ai-je un bug du côté de Flask ? La dernière ligne de la ligne de commande semble donner une erreur CORS.

P粉476475551
P粉476475551

répondre à tous (1)
P粉459578805

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

    Derniers téléchargements
    Plus>
    effets Web
    Code source du site Web
    Matériel du site Web
    Modèle frontal
    À propos de nous Clause de non-responsabilité Sitemap
    Site Web PHP chinois:Formation PHP en ligne sur le bien-être public,Aidez les apprenants PHP à grandir rapidement!