web-dev-qa-db-fra.com

Requête incorrecte Votre navigateur a envoyé une requête que ce serveur ne pouvait pas comprendre.

Bien que je ne sois en aucun cas un expert sur Ubuntu, deux serveurs fonctionnent depuis quelques années sans aucun problème.

Hier soir, lorsque j'ai tenté d'accéder à un site Web local sur l'un d'eux, j'ai eu l'erreur:

**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.

Après plusieurs heures de frustration et sans succès, j'ai reconstruit le serveur. Pendant l'installation d'Ubuntu, je suis allé sur l'autre serveur et j'ai obtenu exactement la même erreur ... Le premier serveur a été reconstruit et affiche la même erreur.

J'ai éteint tous les ordinateurs du réseau. Éteignez le routeur et recommencez.

En plus des deux serveurs, le réseau se compose de trois machines Windows et d'un bureau Ubuntu.

J'ai essayé d'isoler les machines d'Internet, j'ai essayé les clients câblés et sans fil.

Aller sur localhost sur les serveurs affiche la page Ubuntu Apache Default.

La seule chose qui s’est produite au moment où le problème a commencé a été que Windows a décidé d’arrêter cette machine pour une mise à jour. Je ne vois pas comment cela aurait pu causer un problème, mais j'ai isolé cette machine du réseau et le problème existe.

J'ai effacé les cookies, utilisé cinq navigateurs différents et ils signalent tous la même erreur. Je suis à court d'idées et à la recherche de suggestions.

18
Dave Davis

Dans mon cas, c’est le caractère de soulignement_dans DocumentRoot qui cause des problèmes et des heures de débogage. Tout fonctionne correctement une fois que je l'ai supprimé de mon chemin DocumentRoot.

49
Nero

Cela est dû à la mise à jour RFC 3986, qui affirme que les traits de soulignement sont dangereux dans les noms de serveurs d'hôtes virtuels et d'autres éléments. Dans mon cas, je ne pouvais pas changer le nom de l'URL, j'ai donc simplement autorisé ce soulignement en activant ces URL non sécurisées. Pour ce faire, ajoutez simplement HttpProtocolOptions unsafe au fichier httpd.conf.

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

16
Nan

Pour les versions httpd plus récentes, ne supporte pas les traits d'union dans l'URL, dans ce cas, vous devez ajouter HttpProtocolOptions non sécurisé au fichier httpd.conf.

5
Faraz Khan

Ok, je suis sûr à 99,99% d’avoir trouvé le problème à l’aide de Capsule. La clé du succès était de changer le niveau d'erreur d'Apache en débogage. Cela m'a donné un point de départ et à partir de là un peu d'essais et d'erreurs et tout allait bien.

J'avais deux serveurs B777 et B767 que j'ai utilisés pour le développement local. pour les sites Web de développement, j'ai utilisé quelque chose comme www.something.767 et www.something.777. Tous les sites ont été répertoriés dans un fichier hôtes.

Pendant plusieurs années, cela a très bien fonctionné. Pour des raisons que je ne comprendrai peut-être jamais, hier soir, j'ai commencé à avoir l'erreur susmentionnée sur les deux serveurs et sur un autre que j'ai construit ce soir.

Il semble que le problème était d'utiliser des chiffres dans le nom de domaine. Dès que j'ai changé un nom de domaine de www.something.767 en www.something.local (ou apparemment tout autre caractère non numérique), tout est revenu à la normale. 

4
Dave Davis

J'ai dû supprimer le trait de soulignement (_) de la directive ServerName ainsi que le nom d'hôte dans /etc/hosts.

Cependant, le trait de soulignement dans DocumentRoot convient parfaitement.

Ainsi, la ligne correspondante dans /etc/hosts se présente comme suit:

127.0.0.1       mycoolsite.localhost

Et le bloc correspondant dans /etc/Apache2/extra/httpd-vhosts.conf ressemble à ceci:

<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>

N'oubliez pas de lancer apachectl restart après avoir apporté vos modifications.

0
user664833

Cette erreur m'a hanté pendant des jours, jusqu'à ce que je l'obtienne enfin.

Dans mon cas, je créais un CURL vers une URL contenant un espace vide à la fin. Peux-tu le croire? Supprimer l’espace était suffisant pour fonctionner correctement.

0
Marcelo Agimóvel