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 给我提示并引导我朝着正确的方向前进。
我 运行 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 给我提示并引导我朝着正确的方向前进。