Почему я продолжаю получать ошибку axios в моем Django React приложении на Heroku?
Я разработал простое Django React приложение и развернул его на heroku:
https://friendly-interview-duck.herokuapp.com/
Хотя соединение бэкенда и фронтенда работало правильно через axios в local, я начал получать печально известный
GET http://127.0.0.1:8000/api/questions/ net::ERR_CONNECTION_REFUSED
ошибка в развернутом приложении.
Очевидно, я думал, что это как-то связано с хостами/CORS. Изначально я
CORS_ALLOWED_ORIGINS = [
'https://friendly-interview-duck.herokuapp.com',
'https://127.0.0.1:8000.com',
'https://localhost.com'
]
ALLOWED_HOSTS = [
'https://friendly-interview-duck.herokuapp.com',
'https://127.0.0.1:8000.com',
'https://localhost.com']
в моем файле setting.py, но получаю эту ошибку, я изменил ее на:
CORS_ORIGIN_ALLOW_ALL = True
ALLOWED_HOSTS = ['*']
для экспериментов. И знаете что? Я все еще получаю ошибку отказа в подключении! Я очищал деньги несколько раз и даже заходил на развернутый url с другого компьютера, а ошибка все еще существует.
В качестве примечания, я знаю, что многие люди пропускают '/' в конце своих урлов, что вызывает это, но у меня есть '/' в конце моих урлов запросов, так что это не может быть проблемой.
Что я здесь упускаю?
https://github.com/gokceozer1/friendly-interview-duck.git
Когда ваше приложение работает локально, ваш фронтенд может получать информацию из бэкенда через локальный URL (localhost), но это меняется, когда вы развертываете бэкенд и он работает на совершенно другом URL в интернете.
Ваше приложение React, как оно есть сейчас, по существу пытается получить данные с локального хоста пользователя, который в большинстве, если не во всех случаях, не имеет запущенного сервера, что вызывает ERR_CONNECTION_REFUSED
Вам не следует жестко кодировать адрес сервера во внешнем приложении, и используйте URL, начинающиеся с /
(например: /api/posts/create
)
При локальной разработке вы можете разрешить React получать данные с бэкенда, используя опцию proxy.