Ошибка CORS, возникающая при использовании библиотеки Flask-cors и/или декораторов Flask на маршрутах.Python

Программы на Python
Ответить Пред. темаСлед. тема
Anonymous
 Ошибка CORS, возникающая при использовании библиотеки Flask-cors и/или декораторов Flask на маршрутах.

Сообщение Anonymous »

Я создал конечную точку с помощью Flask с Python.
Клиент работает на локальном хосте: 4200, API одновременно работает на локальном хосте: 5000.
Согласно тому, что я нашел. Нет проблем с тем, как я все упорядочил, и библиотека cors-flask должна выполнять свою работу. Это соответствует этому сообщению на форуме. Ошибка Flask-CORS.
Вы увидите, что я настроил CORS(app), как указано в документации Flask CORS, в своем приложении. .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}")
После того, как это не сработало, я попытался добавить простой декоратор @cross-origins к базовому маршруту конечных точек аналитики, указанному в найденном потенциальном решении в разделе «Как включить CORS в flask»
Я также попытался использовать декоратор after_request, который должен изменять заголовки до завершения ответа. Это также не удалось.
ClinicAnalytics ниже относится к сопоставленной модели SQLAlchemy, никаких внешних вызовов API не происходит.
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
API в настоящее время открыт, и в настоящее время мне не нужны заголовки авторизации.
Я пробовал несколько разных материалов: типы и происхождение, никакие комбинации не работают.
Подводя итог:
  • Есть ли другой порядок, который мне нужно разместить класс CORS в файле app.py?
  • Если порядок этого класса в порядке, нужно ли мне что-нибудь удалять?
  • Если мне не нужно ничего удалять, это потому, что я использую две конечные точки локального хоста?


Подробнее здесь: https://stackoverflow.com/questions/790 ... tors-on-ro
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

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