Я использую Flask для создания простого бэк-офиса. Я пытаюсь сделать некоторые запросы на стороне клиента, используя AJAX, но он всегда выдает мне следующую ошибку:
доступ к XMLHttpRequest в 'http://10.11.0.123/ ... 'from origin' http://localhost: 5000 'заблокировано политикой CORS: Ответ на предпечатный запрос не проходит проверку контроля доступа: нет заголовка «Access-Control-Allow-Origin» присутствует на запрошенном ресурсе.
Я уже пробовал несколько решений, но ни одно из них не сработало. Я также использую пакет CORS из flask_cors следующим образом:
CORS(app, resources={r"/hardware/control/1": {"origins": "http://localhost:5000"}})
app.run(host="0.0.0.0", port=5000, threaded=True)
Однако я думаю, что это не влияет на запросы AJAX, поскольку приложение Flask запускается на стороне сервера. Итак, вот мой ajax запрос:
$.ajax({
url: 'http://10.11.0.123/...',
type: "GET",
contentType: 'text/plain',
headers: {
'Access-Control-Allow-Origin': '*',
},
withCredentials: true,
crossDomain: true,
success: function (result) {
console.log(result)
},
});
Я знаю, что сервер назначения получает запрос, однако я не могу получить ответ от сервера.
Анализ сети запросы, с консоли chrome, запрос возвращает статус: сбой и введите: xhr.
Моя конечная точка в flask:
@system.route('/hardware/control/<int:device_id>')
def hardware_control(device_id):
device = Device.query.get(device_id)
return render_template('hardware_interaction/camera_preview.html',device=device)
Я создаю приложение следующим образом :
def create_app():
app = Flask(__name__, instance_relative_config=False)
app.config.from_object('config.DevelopmentConfig')
CORS(app, resources={r"/hardware/control/*": {"origins": "*"}})
with app.app_context():
return app
app = create_app()
if __name__ == "__main__":
app.run(host="0.0.0.0", port=5000, threaded=True)