Flask CORS

Salman Mehmood 15 février 2024
Flask CORS

Nous apprendrons avec cette explication un problème qui survient lorsque nous créons une API dans l’application Flask et comment corriger une erreur lors de l’accès à une application Flask à partir d’un domaine différent.

Résoudre les problèmes d’origine croisée à l’aide de la classe CORS dans Flask

Parfois, nous créons une API, mais nous n’avons aucun problème à la servir à l’utilisateur, mais lorsque nous allons être intégrés au front-end, ce problème survient ; il s’agit d’une requête cross-origin que nous devons résoudre.

Nous discuterons de la manière de résoudre le problème signalé dans le rapport des développeurs frontaux, normalement frontaux, car initialement, lorsque nous créons l’API dans Flask, nous ne regardons pas les étapes qui seraient prises pour résoudre ce CORS. question qui représente le partage des ressources d’origine croisée.

Dans un premier temps, nous devons installer un module intégré appelé Flask-Cors ; une fois ce module installé, nous l’utiliserons dans notre application.

pip install Flask-Cors

Maintenant, nous devons importer CORS, et ce module est responsable de tous les types de problèmes CORS ; il sera en mesure de résoudre toute demande du front-end.

from flask_cors import CORS

Nous devons maintenant créer une application Flask et encapsuler cette application dans la classe CORS afin que cette application soit responsable de l’acceptation de toute demande. Il peut s’agir d’une requête directe sur la route ou d’autres requêtes.

from flask import Flask, Response
from json import dumps
from flask_cors import CORS

app = Flask(__name__)
CORS(app)


@app.route("/", methods=["GET"])
def User_Access():
    return Response(dumps({"User_KEY": "ADB11081"}), mimetype="text/json")


app.run(port=5000)

Il existe plusieurs façons de l’utiliser dans notre application ; le moyen le plus simple est d’envelopper toute l’application dans la classe CORS() ; dans l’exemple précédent, nous avons vu comment procéder.

Deuxièmement, nous pouvons définir à quel domaine nous voulons donner accès et ce que nous autorisons à une chose spécifique dans notre application.

Créons une variable appelée cors puis passons quelques options, la première sera l’application elle-même, et la seconde sera “ressources” qui est un argument mot-clé où nous pouvons spécifier ce à quoi nous voulons autoriser l’accès.

Nous utilisons des expressions régulières, puis à l’intérieur des guillemets, nous mettrons une route, et après la barre oblique, nous pouvons spécifier un utilisateur spécifique, ou nous pouvons passer un astérisque pour autoriser l’accès à tous les utilisateurs.

Après cela, nous définissons à quels domaines nous allons autoriser l’accès, nous devons donc taper origines; ensuite, nous pouvons lui donner une liste d’origines ou de domaines auxquels l’accès est autorisé.

Dans notre cas, nous lui transmettons un astérisque pour tout domaine sur Internet pouvant accéder à toutes nos routes API.

from flask import Flask, Response
from json import dumps
from flask_cors import CORS

app = Flask(__name__)


cors = CORS(app, resources={r"/*": {"origins": "*"}})


@app.route("/", methods=["GET"])
def User_Access():
    return Response(dumps({"User_KEY": "ADB11081"}), mimetype="text/json")


app.run(port=5000)

Nous allons maintenant exécuter le serveur, accéder au navigateur, puis examiner ce qui se passe dans le mode développeur. Nous pouvons voir que Access-Control-Allow-Origin est autorisé pour tous les domaines.

Résoudre les problèmes d’origine croisée à l’aide de la classe CORS dans Flask

Salman Mehmood avatar Salman Mehmood avatar

Hello! I am Salman Bin Mehmood(Baum), a software developer and I help organizations, address complex problems. My expertise lies within back-end, data science and machine learning. I am a lifelong learner, currently working on metaverse, and enrolled in a course building an AI application with python. I love solving problems and developing bug-free software for people. I write content related to python and hot Technologies.

LinkedIn