Nieprawidłowy nagłówek http_host

109

Próbuję stworzyć stronę internetową przy użyciu frameworka Django i uruchomić za pomocą DigitalOcean.com i wdrożyć niezbędne pliki w django-project.

Musiałem dołączyć pliki statyczne do projektu Django i po zebraniu plików statycznych próbowałem odświeżyć moje IP

Dołączam tutoriale, których użyłem do stworzenia strony internetowej. https://www.pythonprogramming.net/django-web-server-publish-tutorial/

Otrzymuję następujący błąd:

DisallowedHost at / Invalid HTTP_HOST header: „198.211.99.20”. Może być konieczne dodanie adresu u'198.211.99.20 'do ALLOWED_HOSTS.

Czy ktoś może mi pomóc to naprawić? To moja pierwsza strona internetowa wykorzystująca framework Django.

Kathiravan Natarajan
źródło
Może to być również Twój ruchomy adres IP w DigitalOcean.
Poopy McFartnoise

Odpowiedzi:

187

Dziennik błędów jest prosty. Jak zasugerowano, musisz dodać 198.211.99.20 do swoich ALLOWED_HOSTSustawień.

W pliku settings.py projektu ustaw w ALLOWED_HOSTSten sposób:

ALLOWED_HOSTS = ['198.211.99.20', 'localhost', '127.0.0.1']

Więcej informacji znajdziesz tutaj.

Prakhar Trivedi
źródło
Teraz pojawia się następujący błąd URL żądania: 198.211.99.20 Typ wyjątku: TemplateDoesNotExist Wartość wyjątku: personal / home.html Lokalizacja wyjątku: /usr/local/lib/python2.7/dist-packages/django/temp‌ late / loader.py w get_template, wiersz 25 Mam swoje szablony w następującym folderze / home / django / django_project / personal / templates / personal
Kathiravan Natarajan
@Kathir Jest wiele przykładów tego błędu, po prostu wyszukaj go w Google i jeśli problem nadal występuje, zadaj go jako osobne pytanie, komentarze nie są zbyt opisowe.
Prakhar Trivedi
To na pewno działa, ale jest zła praktyka, jak zawsze należy użyć pliku .env
Abhishek Jebaraj
@AbhishekJebaraj czy mógłbyś wyjaśnić trochę więcej lub udostępnić link z dokładniejszym wyjaśnieniem?
Jesus Almaral - Hackaprende
1
@JesusAlmaral Plik .env to lokalny plik zawierający hasła i inne poufne informacje. Jeśli umieścisz wszystkie te poufne informacje w samym kodzie, może to zostać naruszone. Dlatego używamy tego lokalnego pliku .env i każdy przechowuje lokalnie z własnymi hasłami itp.
Abhishek Jebaraj
0

settings.py

ALLOWED_HOSTS = ['*']
George Poliovei
źródło
2
Jak powiedział pydanny "... nie zostawiaj tego tak, jak już to zrozumiesz. Powodem jest to, że Django jest potencjalnie podatne na ataki nagłówka HTTP_HOST. A automatyczne skrypty przeszukują internet, aby sprawdzić, czy strony mają tę lukę." github.com/pydanny/cookiecutter-django/issues/…
javidazac
6
Lol, czyli dla środowiska deweloperskiego. w produkcji wystarczy ustawić DEBUG = False.
George Poliovei
4
Nie chcesz używać znaku „*” do produkcji. To całkowicie omija przyczynę i bezpieczeństwo dozwolonych hostów.
Andy Poquette