it-roy-ru.com

Плохой запрос Ваш браузер отправил запрос, который этот сервер не может понять

Хотя я ни в коем случае не являюсь экспертом по Ubuntu, у меня два сервера работают без проблем.

Прошлой ночью при попытке получить доступ к локальному веб-сайту на одном из них я получил ошибку:

**Bad Request**
Your browser sent a request that this server could not understand.
Additionally, a 400 Bad Request error was encountered while trying to use an ErrorDocument to handle the request.

После нескольких часов разочарования и безуспешности я перестроил сервер. Во время установки Ubuntu я перешел на другой сервер и получил точно такую ​​же ошибку .. Первый сервер был перестроен, и он отображает ту же ошибку.

Я выключил каждый компьютер в сети. Выключил роутер и начал заново.

В дополнение к двум серверам сеть состоит из трех компьютеров с Windows и рабочего стола Ubuntu.

Я пытался изолировать машины от Интернета, я пробовал как проводных, так и беспроводных клиентов.

Переход на localhost на серверах отображает страницу Ubuntu Apache Default.

Единственное, что произошло во время возникновения проблемы, было то, что Windows решила выключить эту машину для обновления. Я не понимаю, как это могло вызвать проблемы, но я изолировал эту машину от сети, и проблема существует.

Я удалил куки, использовал пять разных браузеров, и все они сообщали об одной и той же ошибке. У меня почти нет идей, и я ищу любые предложения.

18
Dave Davis

В моем случае на самом деле это подчеркивание_в DocumentRoot, которое вызывает проблемы и часы отладки. Все работает нормально, как только я удаляю его из пути DocumentRoot.

49
Nero

Это связано с обновлением RFC 3986, в котором утверждается, что подчеркивания небезопасны в именах серверов виртуальных хостов и других элементах. В моем случае я не мог изменить имя URL, поэтому я просто разрешил это подчеркивание, включив эти небезопасные URL-адреса. Для этого просто добавьте небезопасные HttpProtocolOptions в файл httpd.conf.

https://httpd.Apache.org/docs/2.4/mod/core.html#httpprotocoloptions

16
Nan

Для более новых версий httpd не поддерживайте дефисы в URL-адресе, в этом случае вы должны добавить небезопасные HttpProtocolOptions в файл httpd.conf, после этого он будет работать нормально.

5
Faraz Khan

Хорошо, я на 99,99% уверен, что нашел проблему с помощью Capsule. Ключом к успеху было изменение уровня ошибок Apache на отладку. Это дало мне отправную точку, и оттуда немного проб и ошибок, и все было хорошо.

У меня было два сервера B777 и B767, которые я использовал для локальной разработки. для разработки веб-сайтов я использовал что-то вроде www.something.767 и www.something.777. Все сайты были перечислены в файле hosts.

В течение нескольких лет это работало просто отлично. По какой-то причине я, возможно, никогда не пойму, вчера вечером я начал получать вышеупомянутую ошибку на обоих серверах и на другом, который я построил этим вечером.

Кажется, что проблема заключалась в использовании чисел в имени домена. Как только я изменил доменное имя с www.something.767 на www.something.local (или, по-видимому, любые другие нечисловые символы), все вернулось на круги своя. 

4
Dave Davis

Мне пришлось удалить подчеркивание (_) из директивы ServerName, а также имя хоста в /etc/hosts.

Тем не менее, подчеркивание в DocumentRoot просто отлично.

Таким образом, соответствующая строка в /etc/hosts выглядит так:

127.0.0.1       mycoolsite.localhost

И соответствующий блок в /etc/Apache2/extra/httpd-vhosts.conf выглядит так:

<VirtualHost *:80>
    DocumentRoot "/Users/satoshi/Sites/my_cool_site"
    ServerName mycoolsite.localhost
    ErrorLog "/private/var/log/Apache2/my_cool_site.localhost-error_log"
    CustomLog "/private/var/log/Apache2/my_cool_site.localhost-access_log" common
</VirtualHost>

Не забудьте запустить apachectl restart после внесения изменений.

0
user664833

Эта ошибка преследовала меня в течение нескольких дней, пока я, наконец, не получил ее.

В моем случае я делал CURL для URL с пустым пространством в конце. Ты можешь в это поверить? Удаление места было достаточно, чтобы нормально работать.

0
Marcelo Agimóvel