Клиент работает на локальном хосте: 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}")
Код: Выделить всё
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
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