Flask CORS

Salman Mehmood 2024년2월15일
Flask CORS

이 설명을 통해 Flask 앱에서 API를 생성할 때 발생하는 문제와 다른 도메인에서 Flask 앱에 액세스할 때 오류를 수정하는 방법에 대해 알아봅니다.

Flask에서 CORS 클래스를 사용하여 교차 출처 문제 수정

때때로 우리는 API를 생성하지만 이것을 사용자에게 제공하는 데 문제가 없지만 프론트 엔드와 통합하려고 할 때 이 문제가 발생합니다. 이것은 우리가 해결해야 하는 교차 출처 요청입니다.

일반적으로 프론트엔드 개발자 보고서에서 보고된 문제를 해결하는 방법에 대해 논의할 것입니다. 처음에는 Flask에서 API를 만들 때 이 CORS를 해결하기 위해 취해야 할 단계를 살펴보지 않기 때문입니다. 교차 출처 리소스 공유를 나타내는 문제입니다.

첫 번째 단계에서 Flask-Cors라는 내장 모듈을 설치해야 합니다. 이 모듈이 설치되면 애플리케이션에서 이것을 사용할 것입니다.

pip install Flask-Cors

이제 CORS를 가져와야 하며 이 모듈은 모든 유형의 CORS 문제를 담당합니다. 프런트 엔드의 모든 요청을 해결할 수 있습니다.

from flask_cors import CORS

이제 Flask 애플리케이션을 만들고 이 앱이 모든 요청을 수락할 책임이 있도록 CORS 클래스로 해당 앱을 래핑해야 합니다. 경로 또는 기타 요청에 대한 직접 요청일 수 있습니다.

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)

앱에서 이것을 사용할 수 있는 몇 가지 방법이 있습니다. 가장 간단한 방법은 CORS() 클래스에서 전체 앱을 래핑하는 것입니다. 이전 예에서 우리는 그 방법을 살펴보았습니다.

둘째, 액세스 권한을 부여할 도메인과 앱에서 특정 항목을 허용할 항목을 정의할 수 있습니다.

cors라는 변수를 만든 다음 몇 가지 옵션을 전달합니다. 첫 번째 옵션은 앱 자체이고 두 번째 옵션은 액세스를 허용할 항목을 지정할 수 있는 키워드 인수인 resources입니다.

정규식을 사용하고 따옴표 안에 경로를 넣고 슬래시 뒤에 특정 사용자를 지정하거나 별표 기호를 전달하여 모든 사용자에게 액세스를 허용할 수 있습니다.

그런 다음 액세스를 허용할 도메인을 정의하므로 origins를 입력해야 합니다. 그런 다음 액세스가 허용된 원본 또는 도메인 목록을 제공할 수 있습니다.

우리의 경우 모든 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)

이제 서버를 실행하고 브라우저로 이동한 다음 개발자 모드에서 어떤 일이 일어나는지 살펴보겠습니다. Access-Control-Allow-Origin이 모든 도메인에 허용되는 것을 볼 수 있습니다.

Flask에서 CORS 클래스를 사용하여 교차 출처 문제 수정

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