見出し画像

【GASを使ったHTTP通信】HTTPレスポンスについて

1.HTTPレスポンスとは
HTTPリクエストを受けたサーバーがクライアントにデータを送信することです。
1つのリクエストに1つのレスポンスがあり、それで通信が完結します。

2.レスポンスの構成
サーバーはリクエストメソッドに応じた処理を行い、処理結果がレスポンスとして返送されます。
レスポンスの基本的構成は以下のようになります。
・レスポンス行
サーバーでの処理結果を伝える情報。
1行のみ
・メッセージヘッダ
webサーバーのソフトウェア情報、データのタイプ、圧縮方法等が記載
複数行を送信可能
・空行
空白行、1行のみ
・メッセージボディ行
クライアントに送るHTMLや画像のデータが記載
複数行送ることも、省略することも可能。

3.レスポンスの中身
curlコマンドでレスポンス内容を覗きます。
コマンド
>curl --trace-ascii - https://google.com

・レスポンス行
0000: HTTP/1.1 301 Moved Permanently
・メッセージヘッダ行
0000: Location: https://www.google.com/
0000: Content-Type: text/html; charset=UTF-8
0000: Date: Wed, 16 Mar 2022 02:56:53 GMT
0000: Expires: Fri, 15 Apr 2022 02:56:53 GMT
0000: Cache-Control: public, max-age=2592000
0000: Server: gws
0000: Content-Length: 220
・空行

・メッセージボディ行
0000: <HTML><HEAD><meta http-equiv="content-type" content="text/html;c
0040: harset=utf-8">.<TITLE>301 Moved</TITLE></HEAD><BODY>.<H1>301 Mov
0080: ed</H1>.The document has moved.<A HREF="https://www.google.com/"
00c0: >here</A>.
00cc: </BODY></HTML>
<HTML><HEAD><meta http-equiv="content-type" content="text/html;charset=utf-8">
<TITLE>301 Moved</TITLE></HEAD><BODY>
<H1>301 Moved</H1>
The document has moved
<A HREF="https://www.google.com/">here</A>.
</BODY></HTML>

・ちょっとだけ解説
レスポンス行
301 Moved PermanentlyはリクエストされたデータがLocationヘッダーにあるURLに完全に移動したことを示します。
今回だとhttps://google.comはhttps://www.google.comへ移動したのでそちらにリダイレクトするようになってます。
もちろんhttps://www.google.comに行けば200 OKが返されますがページのデータがまるごと表示されるので、
https://google.comこっちにGETメソッドを送りました。
curlコマンドに -L をつけるとリダイレクト先に自動で行きます。

メッセージヘッダ行
Locationは先ほど説明した通り、URLの移動先を持ってます。
Dataは応答を返す時刻、Expiresはエンティティの有効期限を示してます。
Cache-Controlではキャッシュに関する指示を表しており、max-ageが保持可能時間を表します。
Serverはサーバーの種類を表します。gwsはグーグル・ウェブサーバーです。

メッセージボディ行
今回301ページがHTMLファイルで返されてるので、中身がここに表示されます。

4.まとめ
HTTPリクエストを受けたサーバーがクライアントにデータを送信することである。
レスポンスはレスポンス行、メッセージヘッダ行、空行、メッセージボディ行で構成されている。

参考URL
・https://www.itmanage.co.jp/column/http-www-request-response-statuscode/
・https://www.tohoho-web.com/ex/http.htm