ReactJS API 调用 Django REST - 使用 IP 或本地主机?

ReactJS API calls to Django REST - use IP or localhost?

我 运行 ReactJS 前端应用程序和 Django REST 后端 end/API 都在同一个虚拟主机上。该应用程序在本地主机上运行良好,但是当您从其他地方 运行 它似乎无法连接到 API.

客户端浏览器的控制台:

Django REST 运行在服务器上:

我应该使用服务器的外部 IP 而不是本地主机连接到它吗? Localhost 应该可以正常工作,因为前端和 Django API 都托管在同一台服务器上?

在获取 django rest_api 之前,确保在后端 settings.py 中设置 django-cors-headers。有关详细信息,请查看此 link.

pip install django-cors-headers

settings.py :

INSTALLED_APPS = [
    ...
    'corsheaders',
    ...
]
MIDDLEWARE = [  # Or MIDDLEWARE_CLASSES on Django < 1.10
    ...
    'corsheaders.middleware.CorsMiddleware',
    'corsheaders.middleware.CorsPostCsrfMiddleware',
    ...
]

CORS_ORIGIN_ALLOW_ALL = True
CORS_ALLOW_METHODS = [
    'DELETE',
    'GET',
    'OPTIONS',
    'PATCH',
    'POST',
    'PUT',
]

如果有人正在寻找答案,我在发帖后学到了一些东西:

  • Django API 必须通过 IP 访问,而不是本地主机。
  • 由于我的网站是在 HTTPS 上,Django 也必须通过 HTTPS 访问,否则将无法运行。
  • 由于 Django runserver 不支持 HTTPS,因此您需要使用网络服务器托管它(无论如何在生产环境中都应该这样做),我为此使用了 Apache。

感谢 xxnora 给我提示并引导我朝着正确的方向前进。