単純なHTTP要求をテストするには、次のコマンドを使用しますnc
。
$ printf 'GET / HTTP/1.1\r\nHost: mozilla.org\r\nAccept: */*\r\n\r\n' | nc mozilla.org 80
HTTP/1.1 301 Moved Permanently
Content-Type: text/html
Date: Thu, 10 Mar 2016 23:07:31 GMT
Location: https://www.mozilla.org/
Connection: Keep-Alive
Content-Length: 0
ただし、ほとんどのホストは出力を生成しません。この-v
オプションを使用した結果は肯定的です。
Connection to stackoverflow.com.com 80 port [tcp/http] succeeded!
Connection to reddit.com 80 port [tcp/http] succeeded!
オプションを使用して-D
1 行を指定します。
nc: Permission denied
その理由は何ですか?
答え1
必要な場合があります-q 1
(または2つまたは3つなど)。それ以外の場合は、nc
リモートサーバーが応答する前に終了します。
-D
必要があるかもしれませんroot
。
答え2
一部のヘッダーが失われる可能性があります。
たとえば、ヘッダーはhttpbin.org/get
必須ですAccept:
が、他のWebサイトでは応答をトリガーするために追加のヘッダーが必要になる場合があります。