Das Problem besteht darin, HTTP 1.0 auf einem Server zu verwenden, der HTTP 1.1 (und den Host:
Header, der ein obligatorischer Teil von HTTP 1.1 ist) erfordert, wahrscheinlich, weil wahrscheinlich virtuelles Hosting mehrerer Websites auf einer IP-Adresse erfolgt. Oder vielleicht liegt es hinter einem HTTP-Load-Balancer oder Reverse-Proxy, die im Grunde dasselbe tun: Mehrere separate Webserver-Domänennamen werden hinter einer IP-Adresse und einem Port unterstützt.
Das funktioniert für mich:
$ telnet www.httpbin.org 80 23.23.171.5 wird versucht ... Verbunden mit www.httpbin.org.herokudns.com. Escape-Zeichen ist '^]'. GET / ip HTTP / 1.1 Gastgeber: www.httpbin.org
… Und ich komme zurück…
HTTP / 1.1 200 OK Verbindung: Keep-Alive Server: meinheld / 0.6.1 Datum: Di, 09. Januar 2018 22:01:19 GMT Inhaltstyp: application / json Zugriffskontrolle-Zulassen-Ursprung: * Access-Control-Allow-Credentials: true X-Powered-By: Flasche X-verarbeitete Zeit: 0.000454902648926 Inhaltslänge: 32 Via: 1.1 vegur { "origin": "[Meine IPv4-Adresse wurde geändert]" } ^] telnet> schließen $
Beachten Sie, dass die Verbindung geöffnet blieb und ich die telnet>
Aufforderung zum Schließen verlassen musste. Ich hätte das vermeiden können, indem ich Connection: close
meiner Anfrage einen Header hinzugefügt habe.
Wenn Sie HTTP / 1.1 mit einem Host:
Header versuchen und es für Sie immer noch nicht funktioniert, vergewissern Sie sich, dass Ihr Telnet-Client CRLFs sendet und nicht nur Zeilenumbrüche oder Zeilenvorschübe. Stellen Sie sicher, dass Sie Ihre Anfrage mit einer zusätzlichen CRLF nach der letzten Zeile beenden.