Получена ошибка CORS при использовании Flask с Angular, все остальные решения не удались.Python

Программы на Python
Anonymous
Получена ошибка CORS при использовании Flask с Angular, все остальные решения не удались.

Сообщение Anonymous »

Я создал конечную точку с помощью Flask и SQLAlchemy. Мой клиент создан с использованием Angular 18.
Клиент работает на локальном хосте: 4200, API работает на локальном хосте: 5000.
Я попробовал решения, найденные в этом вопросе, в этом другом вопросе, а также на этом форуме.
Я убедился, что все библиотеки, которые я использую, они тоже актуальны, и они есть. flask-cors должен был решить проблему. Мне нужно знать, правильно ли это указано в коде. Я плохо разбираюсь в Python и, возможно, заказал его неправильно.
Независимо от того, какой порядок я пытаюсь, он все равно выдает ошибку CORS.
Вот код, с которым я работаю:
app.py

Код: Выделить всё

from flask import Flask
from api.utils.db import DB
from api.route.home import base
from api.route.analytics import analytics
from flask_cors import CORS

def create_app():
app = Flask(__name__)
CORS(app, resources={r"/*": {"origins": "*"}},  origins="*", methods=['GET', 'POST'], allow_headers=['Content-Type'])

base.register_blueprint(analytics)
app.register_blueprint(base)

return app

if __name__ == '__main__':
from argparse import ArgumentParser

parser = ArgumentParser()
parser.add_argument('-p', '--port', default=5000, type=int, help='port to listen on')
args = parser.parse_args()
port = args.port

db = DB()

try:
db.check_connection()
app = create_app()
app.run(host='0.0.0.0', port=port)
except Exception as e:
print (f"{e}")
analytics.py

Код: Выделить всё

from flask import Blueprint, jsonify, Response
from sqlalchemy import select
from api.model import ClinicAnalytics, engine
from sqlalchemy.orm import Session
from api.service.analytics_service import AnalyticsService
from flask_cors import cross_origin

analytics = Blueprint("analytics", __name__,  url_prefix='/analytics')
analytics_service = AnalyticsService()

@analytics.route("/", methods=['GET'])
@cross_origin(origins="*")
def analytics_home():
with Session(engine) as session:
rows = session.query(ClinicAnalytics).all()

return analytics_service.rows_to_object(rows)

@analytics.route("/clinic")
def analytics_clinic():
pass

@analytics.after_request
def fix_headers(response: Response):
response.headers["Access-Control-Allow-Origin"] = "*"
response.headers["Access-Control-Allow-Methods"] = "GET, POST, PUT, DELETE, OPTIONS"
response.headers["Access-Control-Allow-Headers"] = "Content-Type, X-Requested-With"

return response
Примечание к файлу выше. ClinicAnalytics — это простая модель БД, написанная с использованием библиотеки SQLAlcehmy
clinic_analytics.service.ts

Код: Выделить всё

getAll = () : Observable =>
this.http.get(`${environment.apiBase}/api/analytics`)
.pipe(
map(clinic_analytics => clinic_analytics)
)
Заранее благодарим за помощь

Подробнее здесь: https://stackoverflow.com/questions/790 ... ns-have-fa

Вернуться в «Python»