質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
Ruby

Rubyはプログラミング言語のひとつで、オープンソース、オブジェクト指向のプログラミング開発に対応しています。

HTTP

HTTP(Hypertext Transfer Protocol)とはweb上でHTML等のコンテンツを交換するために使われるアプリケーション層の通信プロトコルです。

Q&A

解決済

2回答

2902閲覧

メッセージヘッダーの順番についてNet::HTTPResponse

kazuyakazuya

総合スコア193

Ruby

Rubyはプログラミング言語のひとつで、オープンソース、オブジェクト指向のプログラミング開発に対応しています。

HTTP

HTTP(Hypertext Transfer Protocol)とはweb上でHTML等のコンテンツを交換するために使われるアプリケーション層の通信プロトコルです。

0グッド

0クリップ

投稿2019/07/22 07:46

編集2019/07/22 08:04

メッセージヘッダーを取り出すプログラムを作って参考書の
フィールド名、フィールド値を見比べているのですが

参考書では
イメージ説明
のように

http

1ステータスライン 2レスポンスヘッダーフィールド 3一般ヘッダーフィールド 4エンティティヘッダーフィールド

の順番になっているのですが
自分で作ったコードを実行すると

ruby

1require 'net/http' 2 3 http = Net::HTTP.get_response("example.com","/") 4 5 puts "HTTP/" + http.http_version 6 puts http.code 7 puts http.message 8 http.each_capitalized do |name, value| 9 puts name + ":" + value 10 end 11

http

1HTTP/1.1 ステータスライン 2200    ステータスライン 3OK     ステータスライン 4Cache-Control:max-age=604800 一般ヘッダーフィールド 5Content-Type:text/html; charset=UTF-8 エンティティヘッダーフィールド 6Date:Mon, 22 Jul 2019 07:26:59 GMT 一般ヘッダーフィールド 7Etag:"1541025663+gzip" レスポンスヘッダーフィールド 8Expires:Mon, 29 Jul 2019 07:26:59 GMT エンティティヘッダーフィールド 9Last-Modified:Fri, 09 Aug 2013 23:54:35 GMT エンティティヘッダーフィールド 10Server:ECS (sec/96ED) レスポンスヘッダーフィールド 11Vary:Accept-Encoding  レスポンスヘッダーフィールド 12X-Cache:HIT     おそらくキャッシュかなにか 13Content-Length:606 エンティティヘッダーフィールド

ステータスコードはこちらのメソッドを使ってリンク内容
ヘッダーフィールドはリンク内容

イメージ説明
順番がばらばらなのですが
メッセージヘッダーというものはこういうものなのですか?
また、Rubyのメソッドの問題なのでしょうか?
分からないのでお願いします。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答2

0

ベストアンサー

メッセージヘッダーというものはこういうものなのですか?

はい。HTTPヘッダーは順不同です。特に「レスポンスヘッダーフィールド」→「一般ヘッダーフィールド」→「エンティティヘッダーフィールド」の順にしなければならないということはありません。

投稿2019/07/22 08:06

maisumakun

総合スコア145184

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

kazuyakazuya

2019/07/22 08:10

ありがとうございます。
guest

0

RFC で定義する HTTP レスポンスの構造は、

Response = Status-Line ; Section 6.1
*(( general-header ; Section 4.5
| response-header ; Section 6.2
| entity-header ) CRLF) ; Section 7.1
CRLF
[ message-body ] ; Section 7.2

となっているので、

  • 全てに先立ってステータスコードが来る
  • その後に0個以上のヘッダが CRLF を行区切りとしてくる
  • その後に CRLF (空行)が来る
  • その後にメッセージ本文が来る

と規定しています。ですのでヘッダの順序は任意です。

※HTTP 1.1 の時点で、リクエストヘッダの「Host」は必須ですが、それ以外は条件によっては存在しません

投稿2019/07/22 08:28

tacsheaven

総合スコア13703

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

kazuyakazuya

2019/07/22 08:30

ありがとうございます。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問