Назад | Перейти на главную страницу

Следует ли избегать использования CORS при создании SPA с внутренним API, размещенным на одном сервере?

Я наткнулся на этот вопрос и подумал, что мое приложение не должно требовать 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:

  1. - это / setup, где информация о плате отправляется на сервер Flask, поэтому GPIO настроены правильно. Конфигурация необходима, потому что плата может быть подключена различными способами.
  2. - это / visuals, где вы можете взаимодействовать с контактами платы, которые вы подключили.

Поскольку и интерфейс, и бэкэнд находятся на Raspberry Pi, я не вижу причин, по которым нельзя избегать CORS.

Однако я понимаю, почему это необходимо, поскольку браузер, выполняющий запросы, находится в другом домене, чем размещенный бэкэнд, который находится на RPi.


Мой вопрос:

Могу ли я избежать CORS в моем сценарии? И если да, то должен ли я это делать?

Что мне нужно изучить? Все? Просто конфигурация Nginx? Просто сервер Flask? Может просто как порты сервера настроены?

Я старался не показывать код в этом вопросе, так как думал, что для ответа на него не потребуется. Также немного сложно показать весь код без объяснения.