it-swarm.com.de

Fehlerhafte Anfrage Ihr Browser hat eine Anfrage gesendet, die dieser Server nicht verstehen konnte

Obwohl ich kein Experte für Ubuntu bin, habe ich seit zwei Jahren zwei Server ohne Probleme ausgeführt.

Als ich gestern Abend versuchte, auf eine lokale Website zuzugreifen, wurde der Fehler angezeigt:

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

Nach einigen Stunden Frustration und keinem Erfolg, baute ich den Server neu auf. Während der Installation von Ubuntu ging ich zu dem anderen Server und bekam genau den gleichen Fehler ... Der erste Server wurde jetzt neu erstellt und zeigt den gleichen Fehler an.

Ich habe jeden Computer im Netzwerk heruntergefahren. Router heruntergefahren und neu gestartet.

Neben den beiden Servern besteht das Netzwerk aus drei Windows-Computern und einem Ubuntu-Desktop.

Ich habe versucht, die Maschinen vom Internet zu trennen, ich habe sowohl kabelgebundene als auch drahtlose Clients versucht.

Wenn Sie auf den Servern zu localhost wechseln, wird die Seite Ubuntu Apache Default angezeigt.

Das einzige, was sich zu dem Zeitpunkt ereignete, als das Problem einsetzte, war, dass Windows beschlossen hatte, diesen Computer für ein Update herunterzufahren. Ich sehe nicht, wie dies ein Problem verursacht haben könnte, aber ich habe diese Maschine vom Netzwerk isoliert und das Problem besteht.

Ich habe Cookies gelöscht, fünf verschiedene Browser verwendet und alle melden den gleichen Fehler. Ich bin über Ideen und suche nach Anregungen.

18
Dave Davis

In meinem Fall ist es eigentlich der Unterstrich_in DocumentRoot, der Probleme und stundenlanges Debugging verursacht. Alle funktionieren gut, sobald ich sie aus meinem DocumentRoot-Pfad entferne.

49
Nero

Dies ist auf das Update RFC 3986 zurückzuführen, das behauptet, dass Unterstriche in virtuellen Host-Servernamen und anderen Elementen unsicher sind. In meinem Fall konnte ich den URL-Namen nicht ändern. Daher habe ich dies nur durch die Aktivierung dieser unsicheren URLs zugelassen. Fügen Sie dazu der httpd.conf-Datei einfach HttpProtocolOptions unsafe hinzu.

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

16
Nan

Für neuere httpd-Versionen werden Bindestriche in der URL nicht unterstützt. In diesem Fall müssen Sie HttpProtocolOptions unsicher zur httpd.conf-Datei hinzufügen. Danach funktioniert es einwandfrei.

5
Faraz Khan

Okay, ich bin zu 99,99% sicher, dass ich das Problem mithilfe von Capsule gefunden habe. Der Schlüssel zum Erfolg bestand darin, die Fehlerstufe von Apache in Debugging zu ändern. Dies gab mir einen Startpunkt und von da aus ein bisschen Ausprobieren und alles war gut.

Ich hatte zwei Server B777 und B767, die ich für die lokale Entwicklung verwendete. Für Entwicklungswebseiten habe ich so etwas wie www.something.767 und www.something.777 verwendet. Alle Websites wurden in einer Hosts-Datei aufgelistet.

Das hat seit einigen Jahren gut funktioniert. Aus irgendeinem Grund verstehe ich nie, dass ich gestern Abend auf beiden Servern und auf einem anderen, den ich heute Abend gebaut habe, den oben genannten Fehler erhalten habe.

Es scheint, dass das Problem die Verwendung von Zahlen im Domainnamen war. Sobald ich einen Domainnamen von www.something.767 in www.something.local (oder anscheinend andere nicht numerische Zeichen) geändert habe, war alles wieder normal. 

4
Dave Davis

Wenn Sie in Docker Compose das Netzwerk verwenden, über das Sie Containernamen als URLs/Hosts für die Kommunikation verwenden können, müssen Sie sicherstellen, dass im Namen keine Unterstriche verwendet werden (per Neros Antwort =).

Das hat mich für immer zum Debuggen gebracht, daher füge ich den anfänglichen Fehlertext unten (erneut) ein, sodass Google diese Frage hoffentlich ein wenig weiter oben an die nächste Person weiterleitet, die versucht, PHP Curl in einem Docker-Netzwerk zu beheben.

400 Bad Request Bad Request

Ihr Browser hat eine Anfrage gesendet, die dieser Server nicht verstehen konnte.

Außerdem ist beim Versuch, die Anforderung mit einem ErrorDocument zu verarbeiten, ein 400 Bad Request-Fehler aufgetreten.

2
amflare

Ich musste den Unterstrich (_) aus der ServerName-Direktive sowie den Hostnamen in /etc/hosts entfernen.

Der Unterstrich in DocumentRoot ist jedoch in Ordnung.

Daher sieht die entsprechende Zeile in /etc/hosts folgendermaßen aus:

127.0.0.1       mycoolsite.localhost

Der entsprechende Block in /etc/Apache2/extra/httpd-vhosts.conf sieht folgendermaßen aus:

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

Vergessen Sie nicht, apachectl restart auszuführen, nachdem Sie Ihre Änderungen vorgenommen haben.

0
user664833

Dieser Fehler hat mich tagelang verfolgt, bis ich ihn endlich bekam.

In meinem Fall habe ich eine CURL zu einer URL gemacht, die am Ende ein leeres Leerzeichen hat. Können Sie es glauben? Das Entfernen des Platzes war ausreichend, um gut zu funktionieren.

0