Я наткнулся на этот вопрос и подумал, что мое приложение не должно требовать CORS, поскольку оно размещено на том же сервере (малиновый пи).
Однако, поскольку CORS - это безопасность "характерная черта"Я также не уверен, будет ли избегать этого хорошей практикой. (Я почти уверен, что это не так)
Мое одностраничное приложение довольно простое, и работа с CORS добавила ему немного сложности, что кажется ненужным для проекта такого масштаба.
SPA кодируется VueJS а бэкэнд API - это Python Flask Server. VueJS размещается на Nginx, вызовы api к серверу фляги выполняются через uWsgi. CORS появился только потому, что флеш-сервер находится в другом домене, чем внешний интерфейс, который находится в браузере. (с точки зрения сети)
На данный момент я не нашел способа избежать CORS в моем сценарии, но при исследовании выяснилось, что конфигурации внутри Nginx единственный способ приблизиться к этому.
С моей точки зрения, в реализации CORS нет необходимости. Чтобы объяснить, вот концепция того, что делает приложение:
Интерфейс служит конфигурацией, в которой настраиваются тип платы и последовательный порт. Кроме того, есть также некоторая настройка имен контактов и используемых в целом контактов.
Например:
BoardType: плата ввода IM8
Порт: SER1
Контакты: 2
pin1 -> вход 3 - имя: «Я вход 3»
pin2 -> вход 6 - имя: «Я вход 6»
Эта конфигурация сделана на firepi.com/setup
Затем при нажатии на ссылку Визуализация firepi.com/visualization
интерфейс создается на основе настройки. В основном, поскольку это плата ввода, создаются 2 кнопки, соответствующие входу 3 и входу 6.
При нажатии кнопок появляется ajax делается запрос к серверу Flask с информацией о порте и контакте. Это запустит код на сервере фляги, который активирует указанный пин на присоединенной плате.
Сервер Flask размещен на том же устройстве, только на другом порту (5000): 127.0.0.1:5000
Во всем этом есть 2 типа запросов API:
Поскольку и интерфейс, и бэкэнд находятся на Raspberry Pi, я не вижу причин, по которым нельзя избегать CORS.
Однако я понимаю, почему это необходимо, поскольку браузер, выполняющий запросы, находится в другом домене, чем размещенный бэкэнд, который находится на RPi.
Мой вопрос:
Могу ли я избежать CORS в моем сценарии? И если да, то должен ли я это делать?
Что мне нужно изучить? Все? Просто конфигурация Nginx? Просто сервер Flask? Может просто как порты сервера настроены?
Я старался не показывать код в этом вопросе, так как думал, что для ответа на него не потребуется. Также немного сложно показать весь код без объяснения.