イントロダクション
Socketでリクエストを飛ばす方法を探していて見つけたのでメモ
HTTPリクエストの中身
要点1:HTTPリクエストとは?
「HTTPリクエストはクライアントが送信してサーバーにアクションを起こさせるリクエストと、サーバーの回答であるレスポンスの、2 種類のメッセージがあります。」
要点2:HTTPリクエストのデータ形式
「HTTP メッセージは ASCII でエンコードされたテキスト情報で構成されており、複数の行にまたがります。」
<HTTPメッセージ>
POST / HTTP/1.1 Host: localhost:8000 Connection: keep-alive User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/71.0.3578.80 Safari/537.36 Sec-Metadata: destination=image, site=same-origin Accept: image/webp,image/apng,image/*,*/*;q=0.8 Referer: http://localhost:8000/ Accept-Encoding: gzip, deflate, br Accept-Language: ja,en-US;q=0.9,en;q=0.8
<メソッド>
・POST / HTTP/1.1 ・GET /background.png HTTP/1.0 ・HEAD /test.html?query=alibaba HTTP/1.1 ・OPTIONS /anypage.html HTTP/1.0
ちょっと試してみる
通常HTTPヘッダなどを直接指定することはない(だいたいアプリケーション(フレームワークなど)側でやっている)ので今まで触らなかったがヘッダ情報にオリジナルのヘッダを加えてみた。
オリジナルヘッダ追加リクエスト
>>>> Testing <<<<<
127.0.0.1 - - [13/Dec/2018 14:54:35] "GET / HTTP/1.1" 200 -
Created Header!
File CLosed!
*** POST ***
Content-Length: 16
Content-Type: text/plain
Message: Hello
「Hello」は引数で与えたもので、実際に渡す値はなんでも良い(テキストであれば)
<オリジナルヘッダを入れた場合>
*** POST ***
Content-Length: 16
Content-Type: text/plain
Message: Hello
*** BODY ***
Hello
<オリジナルヘッダを入れない場合>
*** POST *** Content-Length: 0 Content-Type: text/plain *** BODY *** None