Приложение django работает локально, но csrf запрещен на heroku

Мое приложение работает нормально на heroku local, но после развертывания в heroku, каждый раз, когда я пытаюсь войти/зарегистрироваться/зарегистрироваться как администратор, оно выдает следующее:

я пытался разместить @csrf_exempt на profile представлениях

что я могу сделать?

enter image description here

Похоже, что у вас нет адреса heroku в качестве доверенного происхождения в файле setting.py вашего проекта, для этого вы можете использовать corsheaders

pip install django-cors-headers 

затем в вашем файле settings.py

    INSTALLED_APPS = [ 
   ...
   'corsheaders',  
   ...
]

MIDDLEWARE = [
  'django.middleware.security.SecurityMiddleware',
  ...
  'django.middleware.clickjacking.XFrameOptionsMiddleware',
  'corsheaders.middleware.CorsMiddleware',
]

Если бы вы еще не развернули приложение, вы могли бы добавить CORS_ORIGIN_ALLOW_ALL = True, но поскольку вы знаете, где развернуто ваше приложение, использование белого списка для происхождения является гораздо лучшей идеей

CORS_ORIGIN_WHITELIST = (
  'https://pacific-coast-78888.herokuapp.com',
)

Сообщение об ошибке достаточно понятно (прошу прощения за опечатки, так как я не могу скопировать с изображения):

Origin checking failed - https://pacific-coast-78888.herokuapp.com does not match any trusted origins

Используемый вами домен не является доверенным источником для CSRF.

Далее идет ссылка на документацию, которая, как я подозреваю, ведет на документацию Django CSRF, хотя документация для CSRF_TRUSTED_ORIGINS настройки может быть более полезной:

Список доверенных источников для небезопасных запросов (например, POST).

Для запросов, включающих заголовок Origin, CSRF-защита Django требует, чтобы заголовок соответствовал происхождению, присутствующему в заголовке Host.

Найдите в своем settings.py для CSRF_TRUSTED_ORIGINS и добавьте https://pacific-coast-78888.herokuapp.com в список. Если такой настройки еще не существует, просто добавьте ее:

CSRF_TRUSTED_ORIGINS = ["https://pacific-coast-78888.herokuapp.com"]

Если Heroku использует django "4.x.x" версии:

Затем, если ошибка выглядит так, как показано ниже:

Origin checking failed - https://example.com не соответствует ни одному доверенному источнику.

Добавьте этот код ниже в "settings.py":

CSRF_TRUSTED_ORIGINS = ['https://example.com']

В вашем случае вы получили эту ошибку:

Origin checking failed - https://pacific-coast-78888.herokuapp.com не соответствует ни одному доверенному источнику.

Итак, вам нужно добавить этот код ниже в ваш "settings.py":

CSRF_TRUSTED_ORIGINS = ['https://pacific-coast-78888.herokuapp.com']
Вернуться на верх