Доступ к API из бэкэнда из React непосредственно на сервере - PullRequest
0 голосов
/ 08 июля 2019

Я использую Django в качестве бэкенда и React для внешнего интерфейса.Я запускаю интерфейс реакции с использованием PM2 и обращаюсь к бэкэнду Django через PM2.Я также установил Nginx в качестве обратного прокси-сервера для перенаправления запросов в * mydomain.toplevel / admin на администратор django * mydomain.toplevel / на интерфейс реагирования

Бэкэнд и интерфейс взаимодействуют через API REST, используя DJANGOФреймворк REST и Axios for React.

Мой главный вопрос на данный момент: можно ли позволить веб-интерфейсу и бэкэнду взаимодействовать напрямую на сервере, чтобы не подвергать API-интерфейс интернету??

Наверное, нет, потому что реакция, как интерфейс JS, выполняется на стороне клиента - правильно?Это также верно, если интерфейс React не является статическим файлом (npm run-server build), а через PM2?

1 Ответ

1 голос
/ 08 июля 2019

Вы можете достичь этого, только разрешив домен вашего приложения React.Для этого

  1. Установить pip install django-cors-headers
  2. Добавить его в установленные приложения
 INSTALLED_APPS = (
    'corsheaders',
    ...
 )
Добавление классов промежуточного программного обеспечения в settings.py:
   MIDDLEWARE = [  # Or MIDDLEWARE_CLASSES on Django < 1.10
       'corsheaders.middleware.CorsMiddleware',
       'django.middleware.common.CommonMiddleware',
       ...
  ]
Добавьте домен своего приложения React, чтобы разрешить его внутри settings.py
  CORS_ORIGIN_ALLOW_ALL = False
  CORS_ORIGIN_WHITELIST = (
    'https://your-react-apps-domain',
    'http://localhost:3000'
  )
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...