質問: 手動http(s)リクエスト 手動でhttpまたはhttps要求を行うことができるツール(おそらくlinux上)を探しています。手動とは、私は本当にそれを意味します:私はそれに次のようなテキストファイルを供給することができるはずですpost /foo http/1.1 host: www.example.com accept: text/xml,text/html;q=0.9,text/plain;q=0.8,image/png,*/*;q=0.5 accept-language: en-gb,en;q=0.5 content-type: text/plain content-length: 11 hello world と宛先url(www.example.com/foo)を入力し、そのurlにリクエストを送信します。せいぜい、content_lengthヘッダーが自動的に計算されれば便利です。pythonのhttplibのようなライブラリを使用してそのようなツールを書くことはできますが、それが必要な理由は、そのようなライブラリで問題が発生したときに手動で調査するためです。
回答: 私にとっては、リクエストファイルの作成に役立ちました(例:request.txt)post /foo http/1.1 host: www.example.com accept: text/xml,text/html;q=0.9,text/plain;q=0.8,image/png,*/*;q=0.5 accept-language: en-gb,en;q=0.5 content-type: text/plain; charset=utf-8 content-length: 11 connection: close hello world 次に、openssl s_clientコマンドを呼び出します。cat request.txt | openssl s_client -quiet -connect www.example.com:443ただし、いくつかの点に注意してください。 ファイル、特にコンテンツ本文は、適切にエンコードされている必要があります。ファイルがutf-8でエンコードされている場合は、ヘッダーcontent-type: text/plain; charset=utf-8を含めるとよいでしょう。 ヘッダーの行末はcr/lfである必要があります。 lfの場合のみ、webサーバーはhttp/1.1 505 http version not supportedを返すことができます。これは、標準のhttpプロトコルが行末にcr/lfを使用するためです( https://www.w3.org/ protocols/rfc2616/rfc2616-sec4.html )。unix2dosコマンドを使用してこの変換を行うことができます。 connection: closeヘッダーを追加して、リクエストを終了し、通話から戻ります。それ以外の場合、サーバーが通常connection: keep-aliveヘッダーで応答する場合、コマンドはユーザーの操作を待機します。