私はUbuntuを使用しており、netcat-traditionalバージョンに切り替えましたが、単純なHTTPリクエストを試してみると常に失敗し、すべてのサーバーで400 Badリクエストを提供します。 (Apache Ubuntu is running on port 80 )
nc localhost 80
私は単に次の内容を送った。
GET / HTTP/1.1
Host: localhost
単純または複雑な要求は常に同じエラーを生成します。 「bash」または「システム」エンコーディングに関連している可能性があると思いましたが、上記のように「ダミー」HTTPリクエストを作成して別のファイルに保存することをテストしました。直接入力しましたが、同じエラー(400...)が発生します。
nc localhost 80 < header.txt
答え1
EOLに問題があることがわかりました。サーバーが Linux/Unix で実行されている場合でも、MS-DOS の EOL ("\n" を "\r\n" に変更) システムを使用する必要があります。
保存時にgeditの場合、geditの「名前を付けて保存」画面の「行末」オプションで「Windows」を選択すると、すべての問題が解決されます。