Вы когда-нибудь получали эти раздражающие электронные письма об ошибке Invalid HTTP_HOST header?
Invalid HTTP_HOST header: '104.131.142.135'. You may need to add u'104.131.142.135' to ALLOWED_HOSTS. Request repr(): <WSGIRequest path:/, GET:<QueryDict: {}>, POST:<QueryDict: {}>, COOKIES:{}, META:{'HTTP_CONNECTION': 'close', 'HTTP_HOST': '104.131.142.135', ...
Причина, по которой вы их получаете, заключается в том, что кто-то пытается получить доступ к вашему сайту через хост, не указанный в настройке ALLOWED_HOSTS. В моем случае, для этого блога, у меня есть только это:
ALLOWED_HOSTS = ['.webdevblog.ru']
Поэтому, если кто-то заходит на мой сайт, используя хост, который не заканчивается на webdevblog.ru, он выдаст ошибку Bad Request (400). Так как мой логгер настроен для отправки мне всех сообщений об ошибках по электронной почте, я получаю все эти сообщения.
Простой тест — просто зайти на сайт, используя его IP-адрес. Для этого нужно установить соответствие между IP-адресом сервера и тестовым именем, (это можно сделать добавив запись в /etc/hosts), а затем перейдя к этому хосту в веб-браузере. Запись может выглядеть так:
# /etc/hosts 1.2.3.4 www.example.com
Теперь, если вы посетите www.example.com и он попадет на ваш сайт, Django выдаст 400, и вы получите уведомление по электронной почте.
Хорошей новостью является то, что вы можете легко отключить эти оповещения в настройках Django:
... 'handlers': { 'null': { 'level': 'DEBUG', 'class': 'logging.NullHandler', }, 'console': { 'level': 'INFO', 'class': 'logging.StreamHandler', 'formatter': 'default', }, 'mail_admins': { 'level': 'ERROR', 'filters': ['require_debug_false'], 'class': 'django.utils.log.AdminEmailHandler', } }, 'loggers': { 'django.security.DisallowedHost': { 'handlers': ['null'], 'propagate': False, }, 'django.request': { 'handlers': ['mail_admins'], 'level': 'ERROR', 'propagate': True, }, '': { 'handlers': ['console', ], 'level': 'INFO', } } ...
Здесь мы добавили нулевой обработчик и установили django.security.DisallowedHost для использования этого нулевого обработчика, и теперь такие ошибки будут игнорироваться.
Так же можно избавиться от этой проблемы в настройках ngnix:
location / { ... if ( $host !~* ^(yourdomain.com|www.yourdomain.com)$ ) { return 444; } .... }
Краткий перевод: https://vuejs.org/guide/components/v-model.html Основное использование v-model используется для реализации двусторонней привязки в компоненте. Начиная с Vue…
Сегодня мы рады объявить о выпуске Vue 3.4 «🏀 Slam Dunk»! Этот выпуск включает в…
Vue.js — это универсальный и адаптируемый фреймворк. Благодаря своей отличительной архитектуре и системе реактивности Vue…
Недавно, у меня истек сертификат и пришлось заказывать новый и затем устанавливать на хостинг с…
Каким бы ни было ваше мнение о JavaScript, но всем известно, что работа с датами…
Все, кто следит за последними событиями в мире адаптивного дизайна, согласятся, что введение контейнерных запросов…