Все все ипы в CSRF_TRUSTED_ORIGIN django
Как разрешить все/любые ip в CSRF_TRUSTED_ORIGIN в django Backend django restapi запущен, а frontend находится на angular в одной системе, и мы пытаемся получить доступ с системного ip в другой системе, я могу получить доступ к frontend, но при доступе к backend POST метод API не работает, он показывает not found in card trusted origins. В settings.py я сделал get dynamic ips.
import socket
def get_ipaddress():
host_name = socket.gethostname()
ip_address = socket.gethostbyname(host_name)
return "http://"+ip_address+":4200"
ALLOWED_HOSTS=["*"]
CSRF_TRUSTED_ORIGINS=[get_ipaddress()]
Попробовал использовать csrf_excempt, но он не работает. Версия django4.0.1, Angular 16
Для CSRF вам нужно только внести в белый список/разрешить IP сервера, на котором размещено ваше приложение angular. Во время работы ангулярного приложения вы должны внести в белый список url, по которому вы обращаетесь к вашему ангулярному приложению в браузере.
например: http://192.168.1.1:4200
. или https://whateveryourwebappurlis.com
.
Это URL, который вы используете для загрузки приложения в браузере. Вам необходимо внести его в белый список.
CSRF_TRUSTED_ORIGINS=["http://localhost:4200", "https://whateveryourwebappis.com"]
Убедитесь, что вы передаете это в заголовке origin вашего запроса к django app.
Читайте больше на: https://docs.djangoproject.com/en/4.0/ref/settings/#csrf-trusted-origins
socket.gethostbyname(host_name.local)
При использовании приведенной выше строки в get_ipaddress, все заработало